molily: IE9 macht JS-Manipulationen rückgängig?!?

Beitrag lesen

Hallo,

function wackelschalter(given) {
var blocks = document.getElementById('tm_serviceDetails');
for (var i=0; i<=blocks.childNodes.length-1; i++) {

Stilanmerkung: Um Wiederholungen zu vermeiden und die Performance zu optimieren, besser so:
var details = document.getElementById('tm_serviceDetails').childNodes;
for (var i = 0, l = details.length; i < l; i++) {

  	if (blocks.childNodes[i].nodeName == 'DIV') {  

Die Wiederholung von »blocks.childNodes[i]« ist unnötig und langsam. Den Wert kannst du in einer Variablen speichern.

var detail = details[i];
if (detail.nodeName == 'DIV') usw.

  		if (blocks.childNodes[i].className == given ) {  
  			blocks.childNodes[i].style.display = "block";  
  			} else {  
  				blocks.childNodes[i].style.display = "none";  
  			}  

Kürzer:
detail.style.display = detail.className == given ? 'block' : 'none';

aufgerufen wird über einen onClick="wackelschalter(bereich1);".

Wo steht das onclick? Zeig mal den entsprechenden Code.

Hier übergebe ich den Klassennamen des DIV-Elements ('bereich1', 'bereich2', '...')

In obigem Beispiel übergibst du keinen String, sondern einen (wahrscheinlich nicht auflösbaren) Bezeichner. Da fehlen die Anführungszeichen.

nach Durchlauf der Schleife nimmt der IE aber alle Änderungen wieder zurück und zeigt das HTML so an, wie in die Datei eingetragen.

Hört sich so an, als würde die Seite neu geladen. Wo steht das onclick? In einem a-Element?

Stell den Beispielcode mal bitte auf http://jsfiddle.net oder lade ihn anderweitig hoch, sodass wir ihn einfach testen können.

Mathias