1UnitedPower: DIV Container mit Paramter in URL aktivieren

Beitrag lesen

Hakuna matata!

Hallo @all,
vielen Dank für die Rücklmeldungen. Nachstehend der Code zum Verständnis:

Ich hab deinen Code mal durch einen JavaScript-Beautifier gejagt, damit die Verschachtelungen deutlich werden:

var layer = new Array();  
layer[0] = 'layer1';  
layer[1] = 'layer2';  
layer[2] = 'layer3';  
layer[3] = 'layer31';  
layer[4] = 'layer32';  
layer[5] = 'layer4';  
layer[6] = 'teaser';  
  
function switch_layer(id) {  
    if (document.getElementById(id).style.display = "none") {  
        for (i = 0; i < layer.length; i++) {  
            document.getElementById(layer[i]).style.display = "none";  
        }  
        document.getElementById(id).style.display = "block";  
    } else {  
        document.getElementById(id).style.display = "none";  
    }  
}

In dem if-Statemeante machst du eine Zuweisung und keinen Vergleich. Das Ergebnis einer Zuweisung ist immer der zugewiesene Wert selbst, in diesem Fall also "none". Und wenn man das in einen boolschen Kontext setzt, evaluiert "none" zu true. Deshalb wird der nachfolgende Zweig immer ausgeführt und der else-Zweig immer ignoriert.

Du wolltet an dieser Stelle bestimmt einen Vergleich mit == oder === machen. Aber auch dann gibt es noch Probleme. Das style-Objekt ist nicht geeignet, um Style-Angaben zu lesen. Dafür gibt es window.getComputedStyle().

Mit Blick auf eure Hinweise scheint es aber keine Lösung dafür zu geben

Doch natürlich geht das und es hat hier auch noch niemand etwas gegenteiliges behauptet. Zusätzlich zu den bisher genannten Möglichkeiten, gibt es auch noch pushState() und history.state.

--
“All right, then, I'll go to hell.” – Huck Finn