Hallo Axel,
Vergleiche die Ausgaben in
<a name="meineSprungmarke" onclick="alert(this.href);alert(this.blah);">Hallo</a>
this.href = [leer]
this.blah = undefined
HTMLAnchorElemente haben per default die Eigenschaft href. Sie muss deshab nicht mit createAttribute usw. erzeugt werden, sondern ihr kann sofort mit [HTMLAnchorElement].href=[DOMString] ein Wert zugewiesen werden.
Danke, da habe ich was gelernt. Allerdings scheint die Methode, eine wenn auch bereits vorhandenen Eigenschaft neu anzulegen und ihr dann mit setAttributeNode() einen Wert zuzuweisen auch im IE einwandfrei zu funktionieren.
Auch die Methode setAttribute() des Node-Objekts ist, wie ich gerade getestet habe, eigentlich unproblematisch und möglicherweise hat es ja doch auch gar nichts mit der Frage zu tun, ob das Attribut per Default existiert oder nicht.
Da steht ja in der DOKU nur in Bezug auf die Schreibweise gewisser Attribute wie useMap und readOnly:
"Wenn Sie diese Attribute mit setAttribute() setzen möchten, müssen Sie die angegebene Schreibweise verwenden, damit der Internet Explorer korrekt arbeitet. Allerdings akzeptieren andere Browser diese speziellen Schreibweisen nicht. Deshalb ist es einfacher, den Internet-Explorer-Fehler zu umgehen, indem Sie auf setAttribute() möglichst verzichten und den Direktzugriff nutzen."
Wenn man der Methode aber einen unsinnigen dritten Übergabeparameter, wie eine leere Zeichenkette mitgibt, dann ignorieren das gescheite Browser und auch beim IE ist dann die Groß- oder Kleinschreibung der Eigenschaft irrelevant. Man braucht sich darüber dann also auch keinen Kopf mehr zu machen.
window.onload = function appendInput() {
var myInput = document.createElement("input");
myInput.setAttribute("rEaDoNlY", true, "");
//myInput.readOnly = true;
//myInput.readonly = true;
document.body.appendChild(myInput);
}
Ich habe es bisher unter Windows XP getestet in IE 6, Opera 9, und FF 1. Wie es unter anderen Betriebssystemen aussieht, wäre spannend zu erfahren.
Gruß Gernot