Antworten auf deine Fragen:
Neues Thema erstellen

JavaScript: IE-Problem bei nextSibling?

Tim1901091

Nicht mehr ganz neu hier

Hallo zusammen,

ich habe ein kleines JavaScript geschrieben, das eine Reihe von Elementen ausblenden soll. Funktioniert in Firefox, Opera, Chrome, Safari und IE9. IE<9 hat damit so seine Schwierigkeiten.
Die folgende Zeile wird immer angekreidet:
Code:
dts[i].nextSibling.nextSibling.style.display = 'none';

Ich vermute mal, dass es mit nextSibling.nextSibling zusammenhängt. Könnte das sein?

Schon mal Danke.
 

sokie

Mod | Web

AW: JavaScript: IE-Problem bei nextSibling?

es hängt eigentlich damit zusammen, dass die IE bisher eine eigene Auffassung vom DOM hatten als andere Broser.
zwischen deinen nodes liegt bei allen browsern (ausser den alten IEs) jeweils textnodes.
nodes haben feste Typen, die man mit der Eigenschaft "nodeType" auslesen kann.
()
das kannst du dir zunutze machen, indem du schaust, ob das jeweils nächste "geschwister" nun ein weiterer elementknoten(IE<9) oder ein textknoten ist(alle anderen Browser) und danach fallabhängig entscheiden:
Code:
if (dts[i].nextSbling.nodeType == 3){//hier textnode -> alle anderen Browser
  element = dts[i].nextSiblng.nextSibling;
} else {//keine Textnode -> es handelt sich um einen IE<9
  element = dts[i].nextSibling;
}
 

Tim1901091

Nicht mehr ganz neu hier

AW: JavaScript: IE-Problem bei nextSibling?

es hängt eigentlich damit zusammen, dass die IE bisher eine eigene Auffassung vom DOM hatten als andere Broser.
zwischen deinen nodes liegt bei allen browsern (ausser den alten IEs) jeweils textnodes.
nodes haben feste Typen, die man mit der Eigenschaft "nodeType" auslesen kann.
()
das kannst du dir zunutze machen, indem du schaust, ob das jeweils nächste "geschwister" nun ein weiterer elementknoten(IE<9) oder ein textknoten ist(alle anderen Browser) und danach fallabhängig entscheiden:
Code:
if (dts[i].nextSbling.nodeType == 3){//hier textnode -> alle anderen Browser
  element = dts[i].nextSiblng.nextSibling;
} else {//keine Textnode -> es handelt sich um einen IE<9
  element = dts[i].nextSibling;
}

Perfekt. Das ist die Lösung. Das funktioniert jetzt sogar (wenn auch mit kleinen Abstrichen bei der Bedienbarkeit) im IE5.5.

Vielen Dank.
 

Tim1901091

Nicht mehr ganz neu hier

AW: JavaScript: IE-Problem bei nextSibling?

Warum willst du den IE 5 und 6 überhauptnoch bedienen?
Ich habe nie behauptet, das zu wollen. Das CSS zerhauts ohnehin bei den beiden Browsern. Ist zwar immer noch bedienbar, wirklich schön ist aber was anderes. Mit display:inline-block; scheint da einiges nicht so zu sein, wies sollte.

Das war mehr so ne zufällige Beigabe, die nicht wirklich beabsichtigt war. Wenn ichs ohnehin schon hab, warum nicht... Wirklich neuen Code würde ich aber für die beiden Browser-Opis nicht mehr schreiben wollen (es sei denn, der Kunde besteht darauf...).
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.066
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben