Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的第二条if语句在第一条if语句为true之后连续运行两次?_Javascript_Jquery_If Statement_Onclick_Click - Fatal编程技术网

Javascript 为什么我的第二条if语句在第一条if语句为true之后连续运行两次?

Javascript 为什么我的第二条if语句在第一条if语句为true之后连续运行两次?,javascript,jquery,if-statement,onclick,click,Javascript,Jquery,If Statement,Onclick,Click,大家好,我的checkRight()函数有问题。 我试着用js建立一个测验网页。 这是我的完整代码: 我的问题由一个具有以下属性的类组成:问题(字符串)、答案(字符串数组)和答案(字符串)属性。 如果我点击正确答案,我的计数器就会变得非常混乱 function checkRight (){ $(".answer").click(function() { check = $(this).html(); if(check===qAry[i].rightAnswer){

大家好,我的checkRight()函数有问题。 我试着用js建立一个测验网页。 这是我的完整代码: 我的问题由一个具有以下属性的类组成:问题(字符串)、答案(字符串数组)和答案(字符串)属性。 如果我点击正确答案,我的计数器就会变得非常混乱

function checkRight (){
  $(".answer").click(function() {
       check = $(this).html();
       if(check===qAry[i].rightAnswer){
         rightCounter++;
         $(".richtigZaehler").text(rightCounter);
         i++;
         askQ();
       }
         else if(check!=qAry[i].rightAnswer){
         console.log("Update");
         wrongCounter++;
         $(".falschZaehler").text(wrongCounter);
      }
  });
}

在外部添加单击处理程序如何?否则,您将需要注销它们

var rightCounter=0; //counter for rightAnswer
var wrongCounter=0; //counter for wronganswer

$(".answer").on("click", function() {
 checkRight(this);   
})
然后在checkRight函数中:

function checkRight (evt){
       check = $(evt).html();
       if(check===qAry[i].rightAnswer){
           debugger;
         rightCounter++;
         $(".richtigZaehler").text(rightCounter);
         i++;
         askQ();
       }
         else if(check!=qAry[i].rightAnswer){
         console.log("Update");
         wrongCounter++;
         $(".falschZaehler").text(wrongCounter);
      }
}

您的代码应该发布在这里,至少足以显示您遇到的问题的上下文。无论如何,问题是,
.click()
每次调用时都会添加一个新的事件处理程序,而不会删除任何已经存在的处理程序。因此,每次调用
checkRight()
时,都会添加另一个冗余的“click”处理程序,并且在发生“click”时会调用每个处理程序。非常感谢。我得到了它。