Last edited one month ago
by Max Mustermann

Common.js

Revision as of 14:08, 27 November 2025 by Max Mustermann (talk | contribs) (Created page with "Jeglicher hier implementierter JavaScript-Code wird bei jedem Seitenaufruf für alle Benutzer geladen.: function ddm() { // Variablen, ändern Sie diese, falls Sie andere Klassennamen festlegen müssen (z. B. mmhide_ für // Benutzer, die beitragen) var parentClass = 'isParent'; //wird angewendet, wenn das LI ein verschachteltes UL enthält. var activeParentClass = 'isActive'; //wird angewendet, wenn das verschachtelte UL sichtbar ist var pre...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* Jeglicher hier implementierter JavaScript-Code wird bei jedem Seitenaufruf für alle Benutzer geladen. */
 
function ddm() {
 
    // Variablen, ändern Sie diese, falls Sie andere Klassennamen festlegen müssen (z. B. mmhide_ für
    // Benutzer, die beitragen)
    var parentClass = 'isParent'; //wird angewendet, wenn das LI ein verschachteltes UL enthält.
    var activeParentClass = 'isActive'; //wird angewendet, wenn das verschachtelte UL sichtbar ist
    var preventHoverClass = 'nohover'; //kennzeichnet eine Navigation, die keine Hover-Effekte erhalten soll.
    var indicateJSClass = 'dhtml'; //wird auf die Hauptnavigation angewendet, wenn JavaScript verfügbar ist.
    var toHideClass = 'hiddenChild'; //wird angewendet, um die verschachtelte UL auszublenden.
    var toShowClass = 'shownChild'; //wird angewendet, um die verschachtelte UL anzuzeigen.
    var currentClass = 'current'; //kennzeichnet das aktuell aktive Unterelement und verhindert dessen Zusammenbruch.
    var d = document.getElementById('nav'); //bezeichnet das Navigationselement
 
    // Falls DOM nicht verfügbar ist, hier abbrechen.
    if (!document.getElementById && !document.createTextNode) {
        return;
    }
 
    // Falls das Navigationselement verfügbar ist, wenden Sie die Klasse an, die die DHTML-Fähigkeiten kennzeichnet.
    if (d) {
        d.className += d.className == '' ? indicateJSClass : ' ' + indicateJSClass;
        var lis, i, firstUL, j, apply;
 
        // Durchlaufe alle LIs und prüfe, welche ein verschachteltes UL enthalten.
        lis = d.getElementsByTagName('li');
        for (i = 0; i < lis.length; i++) {
            firstUL = lis[i].getElementsByTagName('ul')[0];
                // Falls ein verschachteltes UL vorhanden ist, deaktivieren Sie den ersten verschachtelten Link und wenden Sie die Klasse an, um ihn anzuzeigen.
                // Es gibt eine verschachtelte Liste
            if (firstUL) {
                lis[i].childNodes[0].onclick = function() {
                    return false;
                };
                lis[i].className += lis[i].className == '' ? parentClass : ' ' + parentClass;
                // Prüfen, ob ein "aktuelles" Element vorhanden ist 
                apply = true;
                if (new RegExp('\\b' + currentClass + '\\b').test(lis[i].className)) {
                    apply = false;
                }
                if (apply) {
                    for (j = 0; j < firstUL.getElementsByTagName('li').length; j++) {
                        if (new RegExp('\\b' + currentClass + '\\b').test(firstUL.getElementsByTagName('li')[j].className)) {
                            apply = false;
                            break;
                        }
                    }
                }
                // Wenn kein aktuelles Element vorhanden ist, wird die Klasse angewendet, um die verschachtelte Liste auszublenden.
                if (apply) {
                    firstUL.className += firstUL.className == '' ? toHideClass : ' ' + toHideClass;
                    // Prüfen, ob eine Klasse existiert, die Hover-Effekte verhindert, und nur diese Funktion anwenden.
                    // Wenn ja, dann bei Klick, andernfalls bei Klick und Hover.
                    if (new RegExp('\\b' + preventHoverClass + '\\b').test(d.className)) {
                        lis[i].onclick = function() {
                            doddm(this);
                        };
                    } else {
                        lis[i].onclick = function() {
                            doddm(this);
                        };
                        lis[i].onmouseover = function() {
                            doddm(this);
                        };
                        lis[i].onmouseout = function() {
                            doddm(null);
                        };
                    }
                    // iFalls ein aktuelles Element vorhanden ist, definiere die Liste als offen und wende die entsprechende Funktion an. 
                    // Klassen, um die verschachtelte Liste anzuzeigen und das übergeordnete LI als aktives LI zu definieren
                } else {
                    lis[i].keepopen = 1;
                    firstUL.className += firstUL.className == '' ? toShowClass : ' ' + toShowClass;
                    lis[i].className = lis[i].className.replace(parentClass, activeParentClass);
                }
            }
        }
    }
    // Funktion zum Ein- und Ausblenden verschachtelter Listen und zum Hinzufügen von Klassen zu den übergeordneten LIs
    function doddm(o) {
        var childUL, isobj, swap;
 
        // Schleife durch alle LIs der Navigation       
        lis = d.getElementsByTagName('li');
        for (i = 0; i < lis.length; i++) {
            isobj = lis[i] == o;
            // Funktion zum Vertauschen von Klassennamen in einem Objekt
            swap = function(tmpobj, tmporg, tmprep) {
                tmpobj.className = tmpobj.className.replace(tmporg, tmprep);
            };
            // Wenn der aktuelle LI keinen Indikator hat, der sichtbar bleiben soll
            if (!lis[i].keepopen) {
                childUL = lis[i].getElementsByTagName('ul')[0];
                // Prüfen, ob ein verschachteltes UL vorhanden ist und ob das aktuelle LI nicht das angeklickte ist.
                // und die Klassen entsprechend austauschen (d. h. alle anderen verschachtelten Listen ausblenden und 
                // Machen Sie die LIs zum übergeordneten Element anstatt zum aktiven Element.
                if (childUL) {
                    if (new RegExp('\\b' + preventHoverClass + '\\b').test(d.className)) {
                        if (new RegExp('\\b' + activeParentClass + '\\b').test(lis[i].className)) {
                            swap(childUL, isobj ? toShowClass : toHideClass, isobj ? toHideClass : toShowClass);
                            swap(lis[i], isobj ? activeParentClass : parentClass, isobj ? parentClass : activeParentClass);
                        } else {
 
                            swap(childUL, isobj ? toHideClass : toShowClass, isobj ? toShowClass : toHideClass);
                            swap(lis[i], isobj ? parentClass : activeParentClass, isobj ? activeParentClass : parentClass);
                        }
                    } else {
                        swap(childUL, isobj ? toHideClass : toShowClass, isobj ? toShowClass : toHideClass);
                        swap(lis[i], isobj ? parentClass : activeParentClass, isobj ? activeParentClass : parentClass);
                    }
                }
            }
        }
    }
}
window.onload = function() {
    ddm();
    // Fügen Sie unten weitere Funktionen hinzu, die beim Laden aufgerufen werden sollen.
};