这是我将onclick
属性动态设置为链接的代码,但如果没有单击链接本身,则会触发警报。
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"));
}
}
答案 0 :(得分:1)
将相应的行更改为:
elm.setAttribute("onclick", function() { alert("you clicked a link");});
如果将函数调用作为参数传递(例如alert('msg')
),则执行imediatley函数,实际传递的参数是函数的返回值。您所要做的就是将您的eventHandler代码包装成匿名函数
此外,您可以声明一个处理事件的函数,并将其名称作为参数发送:
function handleClick() { alert("you clicked a link");}
elm.setAttribute("onclick", handleClick);
P.S。 :我建议使用addEventListener
功能而不是普通的onEvent内联属性:
elm.addEventListener('click', function() { alert("you clicked a link");}, false);
答案 1 :(得分:0)
尝试将警告语句放入匿名函数
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");
});
}
}