addEventListener无法正常工作
问题描述:
所以我有一个div,它有一个EventListener它工作正常。但我希望EventListener只能在某些点被触发,这就是为什么我添加了if语句的原因。addEventListener无法正常工作
我的印象是,你可以从我的代码下面的方式更改函数的全局变量,但这似乎并没有工作。我试图通过window.clickDisable = false;
更改函数内的变量,但这也不起作用。代码的相关部分如下,有人知道为什么这不起作用吗?谢谢。
var clickDisable = true;
if (clickDisable == false) {
document.getElementById("fight")
var fightMenu = fight.addEventListener("click", fightMenuFunction)
}
function fightMenuFunction() {
}
setTimeout(introAnimation, 7000)
function introAnimation() {
clickDisable = false;
}
答
有与你的代码的问题了一把: 我认为最好的办法是把函数体中的if语句。只有当计时器已经过去时,才希望函数的主体运行,而不是仅在计时器过去时才绑定事件。
此外,您的document.getElementById没有被使用。相反,您可以从元素ID自动解释为全局变量的事实中受益,您可以这样做,正如我在下面所做的那样,但可能不是最佳做法。
var clickDisable = true;
function fightMenuFunction() {
if(!clickDisable){
console.log('This is the function running.')
}
}
fight.addEventListener("click", fightMenuFunction)
window.setTimeout(introAnimation, 7000)
function introAnimation() {
clickDisable = false;
}
<button id="fight">Fight</button>
你'clickDisable'变量停止添加事件侦听器,一个更好的地方可能是它添加事件侦听器 – Icepickle
代码永远不会被再次调用里面。您应该在7秒后添加eventListener。在这个例子中战斗也没有定义。 – dejakob
你可以像这样改变全局变量,但是如果以前为false的语句不会再次用新值重新运行。 – JJJ