执行后延迟JavaScript

时间:2018-07-05 18:27:52

标签: javascript addeventlistener timedelay

document.addEventListener("wheel",changeTopicBackground);

function changeTopicBackground(){
    if(document.getElementById("topicBackground").style.getPropertyValue("background-image")===`url("yy.jpg")`){
        document.getElementById("topicBackground").style.backgroundImage = "url('firstDevil.png')";
    }
    else{
        document.getElementById("topicBackground").style.backgroundImage = "url('yy.jpg')";
    }
}

我也尝试过setTimeout()和setInterval(),但是如果我在函数内部使用setTimeout,则它将在该时间之后在函数内部执行该块...并且setInterval将重复执行,这是不希望的。 / p>

问题是: 在函数内部的代码执行后,如何停止使用wheel事件监听器1秒?

1 个答案:

答案 0 :(得分:1)

您可以在函数触发时删除侦听器,并在一秒钟后使用setTimeout将其恢复:

document.addEventListener("wheel", changeTopicBackground);

function changeTopicBackground() {
  console.log("wheeled!")
  document.removeEventListener("wheel", changeTopicBackground)
  setTimeout(() => document.addEventListener("wheel", changeTopicBackground), 1000)
}