Jak nastavit onClick pomocí JavaScriptu?

Problém se mi nepodařilo reprodukovat. Na rozdíl od zjištění OP funguje níže uvedený řádek dobře na nejnovějších verzích IE, FF, Opera, Chrome a Safari.

link.onclick = function() {alert('clicked');};

Můžete navštívit tento jsFiddle a otestovat ve svém vlastním prohlížeči:

http://jsfiddle.net/6MjgB/7/

Za předpokladu, že na html stránce máme toto:

<div id="x"></div>

Následující kód funguje dobře v prohlížečích, se kterými jsem to zkoušel:

var link = document.createElement('a');
link.appendChild(document.createTextNode("Hi"));
link.setAttribute('href', "#");
link.onclick= function() {link.appendChild(document.createTextNode("Clicked"));}

document.getElementById("x").appendChild(link);

Pokud se vyskytne problém s kompatibilitou prohlížeče, použití jQuery by to mělo vyřešit a kód by měl být mnohem stručnější:

var $link = $("<a>").html("Hi").attr("href","#").click(function (){$link.html("Clicked")})

$("#x").html($link)

Pokud stručnost není dostatečně silným argumentem pro použití jQuery, měla by být kompatibilita prohlížeče ... a naopak :-)

POZNÁMKA:V kódu nepoužívám alert(), protože se zdá, že se to jsFiddle nelíbí :-(


Pomocí addEventListener(...) můžete přidat sudý posluchač DOM jak řekl David. Zahrnul jsem attachEvent pro kompatibilitu s IE.

var link = document.createElement('a');
link.setAttribute('href', "#");
if(link.addEventListener){
   link.addEventListener('click', function(){
      alert('clicked');
   });
}else if(link.attachEvent){
   link.attachEvent('onclick', function(){
      alert('clicked');
   });
}