This question already has an answer here:
Event Listener fires on wrong target / function executes at the wrong time [duplicate]
                                
                                    (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);
  }
);

09-11 18:28
查看更多