jumboweinert: DOM-Scripting & IE

Liebe Leute!

Ich hänge gerade an einem großen Problem.
Habe erfolgreich ein DOM-Script geschrieben, welches eine Liste(ul/li) in eine Variable schreibt, und diese dann vom DOM löscht.
Später wird diese Liste wieder in einem Overlay mit anderem Design ausgegeben.

Nun habe ich das ganze auf'm Mac sowohl mit FireFox, als auch Safari getestet. Funktioniert einwandfrei, so wie ich das will.

Der Internet Explorer 8 (win XP) wendet mein Script zwar auf den aktiven Quelltext an, allerdings nicht auf die Anzeige.
Und FireFox unter win XP gibt sich nicht mal die Mühe, mein Script überhaupt anzuwenden.

function makeOverlay() {
var overlay = document.createElement("div");
overlay.setAttribute("id","overlay");
overlay.setAttribute("class", "overlay");
document.body.appendChild(overlay);
overlay.innerHTML = (listOfManu);
}

function restoreOverlay() {
document.body.removeChild(document.getElementById("overlay"));
}

function removeManuList() {
listOfManu = document.getElementById('manufacturerslist').innerHTML;
var titleHTML = document.getElementById('titleIMG').innerHTML;
document.getElementById('manuListContainer').removeChild(document.getElementById('manufacturerslist'));
var manuList = document.createElement('ul');
manuList.setAttribute('id','manufacturerslist');
document.getElementById('manuListContainer').appendChild(manuList);
manuList.innerHTML = (titleHTML);
}

removeManuList() wird onload aufgerufen.
document.getElementById('titleIMG') ist ein Bild mit onclick="makeOverlay()".

Also sollte das ganze so funktionieren, wie in den anderen Browsern, oder? Was mache ich falsch?
Wenn ich im Internet Explorer in den Quelltext schaue, taucht zwar dort das Bild so auf, wie ich es haben möchte. Nur wird es nicht angezeigt.

Liebe Grüße und herzlichsten Dank für Hilfe!!!
jumboweinert

  1. Hi,

    Wenn ich im Internet Explorer in den Quelltext schaue, taucht zwar dort das Bild so auf, wie ich es haben möchte. Nur wird es nicht angezeigt.

    Was meinst du mit „in den Quelltext schauen“ - redest du von einem DOM-Inspector?

    Zeige bitte ein Online-Beispiel - auf's Wesentliche reduziert und valide.
    Keine Lust, mir eine testbare Version selber aus Bruchstücken zusammen zu basteln.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. function makeOverlay() {
    var overlay = document.createElement("div");
    overlay.setAttribute("id","overlay");
    overlay.setAttribute("class", "overlay");
    document.body.appendChild(overlay);
    overlay.innerHTML = (listOfManu);
    }

    sicherlich gibts an deinem Code viel zu verbessern, IE-problematisch ist aber meines Wissens die Nutzung von setAttribute und die Nutzung von Variablenbezeichnungen, die es schon als id gibt.

    die zitierten Zeilen wären besser in der Form:

    function makeOverlay() {  
     var divoverlay = document.createElement("div");  
     divoverlay.id="overlay";  
     divoverlay.className="overlay";  
     document.body.appendChild(divoverlay);  
     divoverlay.innerHTML = (listOfManu);  
    }
    
    1. sicherlich gibts an deinem Code viel zu verbessern, IE-problematisch ist aber meines Wissens die Nutzung von setAttribute und die Nutzung von Variablenbezeichnungen, die es schon als id gibt.

      setAttribute ist nicht per se problematisch, sondern in gewissen Fällen:
      http://forum.de.selfhtml.org/archiv/2010/12/t202329/#m1366581

      Es ist zudem kein Problem, lokale Funktionsvariablen anzulegen, welche den Namen von globalen Objekten tragen. Diese überdecken die gleichnamigen globalen Variablen einfach. Problematisch wäre es, wenn man eine solche globale Variable anlegt. Aber das müsste m.W. auch eine Exception auslösen.

      Mathias