Hallo,
Ein »Löschen« von Inline-Styles über eine leere Zuweisung ist jedenfalls nirgends vorgesehen. (Man korrigiere mich.)
Löschen vielleicht nicht, aber wenn die bisherige Deklaration mit einem gültigen Wert (die also beachtet wird) durch eine mit einem ungültigen Wert (die also nicht beachtet werden darf) ersetzt wird, kommt das faktisch einem Löschen gleich.
Eine Deklaration wird durch eine ersetzt, die nicht beachtet wird?!
Eine leere Zuweisung ist anscheinend noch einmal was anderes als ein ungültiger Wert bzw. eine spezielle Unterart. Ungültige Werte werden tatsächlich einfach ignoriert, ohne dass ersetzt wird.
var elem = document.getElementById("elem");
alert(elem.style.length);
elem.style.setProperty("color", "red", null);
alert(elem.style.length);
elem.style.setProperty("color", "", null);
alert(elem.style.length);
Hier ist setProperty() mit einem Leerstring als Wert äquivalent zu
elem.style.removeProperty("color");
Das ist, soweit ich weiß, nirgends so geregelt. Ich halte das für eine nicht erklärbare Inkonsequenz.
Hätte ich hingegen
elem.style.setProperty("color", "huggeldidubbeldidu", null);
geschrieben, so hätte Firefox gemeckert:
Fehler: Farbe erwartet, aber 'huggeldidubbeldidu' gefunden. Fehler beim Verarbeiten des Wertes für Eigenschaft 'color'. Deklaration ignoriert.
Und Opera ebenso:
DOM style property
Invalid value for property: color
Line 1:
huggeldidubbeldidu
------------------^
Mathias