setAttribute & Class – Internet Explorer stinkt (mal wieder)…

In JavaScript gibt es ja einige wunderbare Funktionen bzw. Funktionalitäten. Besonders verpönt ist es ja das „.innerHTML“ um Inhalte einzufügen. Es ist schnell aber irgendwie unsauber. Von daher macht man das über das „Einhängen“ von richtigen (X)HTML-Nodes.

Beispiel:

var div =  document.getElementById("mein_div_wo_ich_was_reinhaengen_will");
var table = document.createElement("table");
table.setAttribute("class", "meine_bunte_css_klasse");
div.appendChild(table);

Nachvollziehbar? Gut! Funktioniert aber nicht im Internet Explorer! Warum? Die Antwort mein Freund, weiß ganz allein der Wind.

Machen muss man es wie gefolgt:

[...]
table.setAttribute("className", "meine_bunte_css_klasse");
[...]

oder

[...]
table.className = "meine_bunte_css_klasse";
[...]

Mehr oder weniger elegant ist auch folgende Möglichkeit

[...]
table.setAttribute((document.all ? "className" : "class", "meine_bunte_css_klasse"));
[...]

Da „document.all“ nur unter dem IE verfügbar ist, wird hier „spontan entschieden“ welches Attribut gesetzt wird.

Update:
Wie man in den Kommentaren lesen kann, ist document.all NICHT nur im Internet Explorer verfügbar. Dort steht ebenfalls ein „besserer“ Lösungsansatz. Vielen Dank noch mal für den Hinweis.

War dieser Artikel hilfreich für Sie?
[Gesamt: 0 Durchschnitt: 0]

2 thoughts on “setAttribute & Class – Internet Explorer stinkt (mal wieder)…

  1. Paw sagt:

    Letztere Lösung zur Erkennung von Internet Explorer, ist leider unsauber, da Opera und wahrscheinlich auch andere, über das Objekt document.all verfügen.

    100% läßt sich IE allerdings über folgende Lösung bestimmen:


    var isIe/*@cc_on = true@*/;

    Die Variable isIe ist hierbei nur dann „true“, wenn der Code im Internet Explorer interpretiert wird, da Microsoft offensichtlich irgendwie darauf steht, auch Code-Kommentare nach Anweisungen zu durchforsten.

  2. Ronald sagt:

    Du hast Recht. Das mit document.all hab ich gar nicht gewusst. Ich habe mich ungeprüft auf die Aussagen der einschlägigen Seiten verlassen, dass document.all nur im IE verfügbar ist. Danke für den Hinweis!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *