D.R.: Mit DOM "onclick" setzen?

Beitrag lesen

Hallo,

ich beschäftige mich zur Zeit mit Javascript und bin dabei auf ein Problem gestoßen.

Ich möchte mittels DOM ein <p>-Element an den <body> hängen. Dies sieht bei mir so aus und klappt auch einwandfrei:


var text = document.createTextNode("Hallo Welt!");
var element = document.createElement("p");

element.appendChild(text);

document.getElementsByTagName('body')[0].appendChild(element);

Das würde ich nicht so kompliziert machen (auch wenn's so in der Doku steht).

  
var element = document.createElement("p");  
element.appendChild(document.createTextNode("Hallo Welt!"));  
document.body.appendChild(element);  


Jetzt möchte ich dem <p> Element das onclick-Attribut hinzufügen. Dazu benutze ich setAttributeNode():


var attribut = document.createAttribute("onClick");

attribut.nodeValue = "alert('Juhu!')";

document.getElementsByTagName("p")[0].setAttributeNode(attribut);

Auch das geht einfacher:

element.onclick = function(){alert('Juhu!')};

Braucht der IE also eine "Alternativversion" oder wird das bei ihm so oder so nicht funktionieren?

obige Version funktioniert in allen Browsern und ist auch sinnvoller, weil onclick ja ein Eventhandler und kein Attribut ist.

Bei Selfhtml steht ja, dass der IE mit setAttribute() und setAttributeNode() Probleme bezüglich der Groß/Kleinschreibung hat, aber bei mir funktioniert weder "onclick" noch "onClick" o.ä. ?

Nicht nur bezüglich der Kleinschreibung. Er kann z.B. auch setAttribute("class","x"); nicht umsetzen, weil er scheinbar keine Attribute kennt. Stattdessen setzt er Eigenschaften.

mfg. Daniel