Vorlage Diskussion:Ausklappen2
Version vom 28. Januar 2008, 13:47 Uhr von Schachtelkamel (Diskussion | Beiträge) (das ist doch mal ne runde Sache... *freu*)
Damit die Vorlagen Vorlage:Ausklappen2 und Vorlage:Ausklappen3 funktionen, müsste folgendes ergänzt werden. -- Grüße J* 23:34, 27. Jan 2008 (CET)
- Ich hab' das mal beides ergänzt. Funzt alles super ... getestet in Firefox2 und IE7. Einziger Haken: die Klick-Kats und Sonderzeichen sind jetzt unter dem Bearbeiten-Fenster (so wie früher?). Überschneiden sich da irgendwelche Klassen? Blick' gerade nicht durch.
Trotzdem: vieles groß DANKE! --WiMu 11:00, 28. Jan 2008 (CET)- Super! Das sieht nach harter Arbeit aus... Danke an alle Java- und sonstigen Kümmerer sagt das Schachtelkamel 12:47, 28. Jan 2008 (CET)
Monobook.css
.klapp {
cursor: pointer;
}
span.klapp {
text-decoration: none;
color: #002bb8;
background: none;
}
span.klapp:hover {
text-decoration: underline;
Monobook.js
// ================================================================================
// Ein- und Ausblenden per Javascript
// mit den folgenden Funktionen lässt sich ein div-Konstrukt in ein Einblende-Ausblende-Ding verwandeln
//
// Variante 1 (Klick irgendwo blendet ein oder aus):
// <div class="klapp">
// <div class="klapp_t">Titel im ausgeblendeten Zustand</div>
// <div class="klapp_e">Titel im ausgeblendeten Zustand</div>
// <div class="klapp_i">Einzublendender Inhalt</div>
// </div>
//
// Variante 2 (ein- und ausblenden nur mit Links):
// <div>
// <div class="klapp_t">Titel im ausgeblendeten Zustand mit <span class="klapp">Einblendelink</span></div>
// <div class="klapp_e">Titel im ausgeblendeten Zustand mit <span class="klapp">Ausblendelink</span></div>
// <div class="klapp_i">Einzublendender Inhalt</div>
// </div>
function ausklapp( element )
{
var klapp_i = null;
var klapp_e = null;
var klapp_t = null;
for (i in element.childNodes)
{
if( element.childNodes[i].nodeType == 1 )
{
if ( element.childNodes[i].className == "klapp_i" )
klapp_i = element.childNodes[i];
else if ( element.childNodes[i].className == "klapp_t" )
klapp_t = element.childNodes[i];
else if ( element.childNodes[i].className == "klapp_e" )
klapp_e = element.childNodes[i];
}
if ( klapp_i && klapp_t && klapp_e )
break;
}
if( klapp_i.style.display == "block")
{
klapp_i.style.display = "none";
klapp_e.style.display = "none";
klapp_t.style.display = "block";
}
else
{
klapp_i.style.display = "block";
klapp_e.style.display = "block";
klapp_t.style.display = "none";
}
}
// Diese Funktion weist einem Objekt einen Event-Handler zu.
// Argumente: objekt - das Objekt
// onEvent - ein event, z.b. "click" (ohne das "on", kleingeschrieben, als String)
// funktion - ein Pointer auf die aufzurufende Funktion
// captionMode - falls es keinen speziellen Grund gibt, einfach auf false setzen
function addEvent(objekt, onEvent, funktion, captionMode )
{
if (objekt.addEventListener)
{
objekt.addEventListener(onEvent, funktion, captionMode);
return true;
}
else if (objekt.attachEvent)
{
var ret = objekt.attachEvent("on" + onEvent, funktion);
return ret;
}
else
{
return false;
}
}
// Event-Handler für alle class="klapp"-Objekte zuweisen
function makeAusklapp()
{
// klapp-div-Rahmen
var a = document.getElementsByTagName("div");
for ( div in a )
{
if ( a[div].className == "klapp" )
{
//Leider nicht IE-Kompatibel:
//var f = function () { ausklapp(this) };
//addEvent( a[div], "click", f , false );
//stattdessen:
a[div].onclick = function () { ausklapp(this);}
}
}
// klapp-spans-Rahmen als Link-Ersatz
var a = document.getElementsByTagName("span");
for ( span in a )
{
if ( a[span].className == "klapp" )
{
a[span].onclick = function () { ausklapp(this.parentNode.parentNode);}
}
}
}
// makeAusklapp() nach Laden des Fensters ausführen!!
addEvent( window, "load", makeAusklapp, false );