addEventListener + setTimeout

时间:2017-12-08 01:36:36

标签: javascript

这是我第一次遇到addEventListener()方法的问题。 当我尝试将它与setTimeout一起使用时,即使addEventListener具有“click”属性,也会自动调用该函数。

<button id="test">Test</button>

document.getElementById("test").addEventListener("click", setTimeout(myFunc, 2000));

function myFunc() {
  console.log("Hello");
}

3 个答案:

答案 0 :(得分:2)

这就是你想要的。

&#13;
&#13;
document.getElementById("test").addEventListener("click", function(){setTimeout(myFunc, 2000)});

function myFunc() {
  console.log("Hello");
}
&#13;
<button id="test">Test</button>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您可以在所调用的函数中使用setTimeoutJsfiddle

document.getElementById("test").addEventListener("click", myFunc);

function myFunc() {
    setTimeout(function(){
      console.log("Hello");
    }, 6000);
}

答案 2 :(得分:0)

您可以保留与现在完全相同的代码,但curry通过bind调用您的函数,而不是尝试调用它,同时尝试将其作为参数传递。

document.getElementById("test").addEventListener("click", setTimeout.bind(null, myFunc, 2000));

function myFunc() {
  console.log("Hello");
}
<button id="test">Click</button>