我的js有问题。一旦页面加载,它就会触发logTest而不是每次我点击。
function logTest() {
console.log('test');
}
var id = document.querySelector('#id');
id.addEventListener("click", logTest(), false);
答案 0 :(得分:7)
您希望将事件绑定到函数本身,而不是它的返回值。当您添加事件监听器时,在()
之后移除logTest
:
id.addEventListener("click", logTest, false);
您可以使用getElementById
代替querySelector
,并注意,对于IE< 9,您需要使用attachEvent
代替。可以在this MDN article中找到解决方法。
我建议这样的事情:
var id = document.getElementById('id');
if (id.addEventListener) {
id.addEventListener("click", logTest, false);
} else if (id.attachEvent) {
id.attachEvent("click", logTest);
}
如果您正在使用jQuery,可将其简化为:
$('#id').click(logTest);
答案 1 :(得分:2)
将logTest绑定到click事件后,除了括号外,一切都很好。括号立即调用函数,而不是将其绑定到事件。
id.addEventListener("click", logTest, false);