This question already has an answer here:
Event Listener fires on wrong target / function executes at the wrong time [duplicate]
(1个答案)
5年前关闭。
我有这个JavaScript代码
和HTML看起来像这样
如何防止在单击div元素之前执行该函数?现在,它只更改了innerHTML本身,我希望它等待单击侦听器。
您需要传递一个函数,而不是函数调用的结果:
(1个答案)
5年前关闭。
我有这个JavaScript代码
function change (elem){
if (x==1) elem.innerHTML = "1";
else elem.innerHTML = "not 1";
}
var test = document.getElementById ("abc");
var x=1;
test.addEventListener ("click", change(test));
和HTML看起来像这样
<body>
<div id="abc">a div</div>
</body>
如何防止在单击div元素之前执行该函数?现在,它只更改了innerHTML本身,我希望它等待单击侦听器。
最佳答案
它会立即执行,因为您要立即调用它:
test.addEventListener ("click", change(test));
您需要传递一个函数,而不是函数调用的结果:
test.addEventListener("click",
function() {
change(test);
}
);