Javascript 在settimeout函数中防止onclick函数处于活动状态

Javascript 在settimeout函数中防止onclick函数处于活动状态,javascript,Javascript,我在创造一个记忆,我几乎把它都完成了。我剩下的问题是,在setTimeout函数中 setTimeout(function(){ for(i = 0; i < guesses.length; i++){ if(clearedPairs[i] != i){ var reset = document.getElementById(cardPosition[i]); reset.removeAttribute("style"

我在创造一个记忆,我几乎把它都完成了。我剩下的问题是,在setTimeout函数中

setTimeout(function(){
    for(i = 0; i < guesses.length; i++){
        if(clearedPairs[i] != i){
            var reset = document.getElementById(cardPosition[i]);
            reset.removeAttribute("style");
        }
    }
    score.innerHTML = parseInt(score.innerHTML,10) - 10;
    resetValues();
}, 800);
setTimeout(函数(){
对于(i=0;i
如果在另一张牌上点击,当它等待翻开两张打开的牌时,玩家将获得额外的负分,而这不是应该发生的。有人能帮忙吗


如果需要,我可以发布更多的代码。

您可以使用一个变量来监视您的状态:在setTimeout函数中,将其设置为
true
。完成并可接受单击后,将其设置为
false
。然后在单击处理程序中使用
if
语句检查状态

var inFunction = false;

setTimeout(function(){
    inFunction = true;
    for(i = 0; i < guesses.length; i++){
        if(clearedPairs[i] != i){
            var reset = document.getElementById(cardPosition[i]);
            reset.removeAttribute("style");
        }
    }
    score.innerHTML = parseInt(score.innerHTML,10) - 10;
    resetValues();
    inFunction = false;
}, 800);
var inFunction=false;
setTimeout(函数(){
inFunction=true;
对于(i=0;i

这是否解决了您的问题?

我只是尝试将超时函数拆分为一个单独的函数,而不是执行setTimeout(“flipback()”,800);但是我尝试了你的建议,但是如果你点击两张以上的开场牌,它仍然会增加多个负数:(@Cammy你是想在函数运行时忽略事件,还是想在setTimeout运行时忽略事件?我的答案处理前者。如果是后者,则必须在其他位置设置状态。嗯,我希望在函数在setTimeout内运行时忽略事件,所以我猜两者都是这样?或者我理解setTimeo但错了。我刚刚意识到可能只是暂停,然后(在这种情况下)800毫秒运行内部的函数。虽然我不完全确定这是否重要。从文档中可以看出:
在指定的延迟后调用函数或执行代码段。
请注意,您的代码执行在延迟期间不会暂停。这里,让我向您展示我的代码:我对第106行的if有一个问题,它似乎是问题。第92行的if语句也与此有关。