的setAttribute在JavaScript

问题描述:

这是我的代码,以动态地设置onclick属性来链接。但是没有我点击链接本身的警报triggerd.Pls帮助的setAttribute在JavaScript

window.onload = function() 
{ 
var links = document.getElementsByTagName("a") ; 
     for(var i=0;i<links.length;i++) 
     { 
      elm = links[i]; 
      elm.setAttribute("onclick", alert("you clicked a lik")); 
     } 
} 

变化相应行:

elm.setAttribute("onclick", function() { alert("you clicked a link");}); 

如果你传递一个函数调用的参数(如alert('msg')),函数将执行imediatley,实际传递的参数是函数的返回值。你所要做的就是将你的eventHandler代码包装成一个匿名函数。
此外,你可以声明处理您的活动功能,并把它的名字作为参数:

function handleClick() { alert("you clicked a link");} 
elm.setAttribute("onclick", handleClick); 

附: :我建议使用addEventListener的功能,而不是普通的旧的onEvent内嵌的属性:

elm.addEventListener('click', function() { alert("you clicked a link");}, false); 
+3

也要小心点击了这些_liks_,赶上他们在错误的角度,你会得到一个正确的润湿。 –

+0

是的,好笑。这就是复制粘贴的功能。 –

尝试把警报声明为anonimous功能

window.onload = function() 
{ 
    var links = document.getElementsByTagName("a"); 
    for(var i=0; i < links.length; i++) 
    { 
     links[i].setAttribute("onclick", function() { 
      alert("you clicked a link"); 
     }); 
    } 
}