防止onclick-function在settimeout函数中被激活

Preventing onclick-function to be active when in settimeout function

本文关键字:激活 函数 settimeout onclick-function 防止      更新时间:2023-09-26

我正在创建一个记忆,我几乎都完成了。我剩下的问题是,在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函数中,将其设置为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);

这能解决你的问题吗?