在函数

时间:2017-07-06 17:44:09

标签: javascript jquery

我在onclick函数中通过if / else语句重复循环时遇到问题。这是一个游戏,你必须说一个单词是否有效,你继续前进,直到你弄错了。

发生的事情是代码经过if / else的分支与你所做的问题的次数相同。所以第一个问题一次,第二个问题两次,等等。因此,在第五个问题上,您将获得5个警报框,并且您的分数将增加5而不是1。

总共有相当长的代码,否则就会起作用(我还没有完成hi-score位)。我把它缩短了一点,我认为问题必定在下面。

完整的事情在http://www.absp.org.uk/test/study3lw.shtml

function quiz(){

...

    $('#true').on('click', function(){
        ...
        if (valid === true){          // ie got it right
            score++;
            alert(score);
            ...
        } else {                      // got it wrong
            ...
            score = 0;
            $('#word').append("*");
            alert("Game Over!");
        }
    });

    $('#false').on('click', function(){
        ...
        if (valid === false){         // ie got it right
            score++;
            alert(score);
            ...
        } else {                      // got it wrong
            score = 0;
            alert("Game Over!");
            ...
        }
    });

}


$('#start').on('click', function (){  // calls the above for each question
    ...
    quiz();
});

1 个答案:

答案 0 :(得分:0)

看起来您正在为每个问题创建一个新的点击事件,因此在第五个问题中,您的按钮有五个事件侦听器。我相信jQuery有.one()会在事件被解雇后取消注册。尝试使用.one()而不是.on()

http://api.jquery.com/one/