2014-04-08 59 views
0

我想我在循环功能方面犯了一些错误。我有一个测验,我有四个选项。每次我选择一个答案并点击“nästa”时,它将存储所选择的答案,但万一他们改变了主意并想要回所有选项,他们可以点击“visa alla alternativ”按钮。为了检查我是否正确,我附加了它出现的问题。每次点击“nästa”时,问题的数量都会出现。卡住循环或别的东西?

例如。 1 2 3 4(我点了四次,出现了四个不同的问题)。

但是,如果我点击“签证alla alternativ”数字将是这样的。 1 2 3 4 1 2 3 4.这取决于我点击“visa alla alternativ”的次数。

var answer = []; 
var select; 

$(".option").on("click", click_question); 

function nästa() { 

    answer.push(select); 
    count_click(); 

    $(".option").each(function() { 
     $(this).fadeTo("slow", 1); 
     $(this).on("click", click_question); 
    }); 

    $(this).fadeTo("slow", 0.2); 
    $("#visa_alternativ").fadeTo("slow", 0.2); 
    $("#tillbaka_question").fadeTo("slow", 1); 

    clicks.length = 1; 
} 

function click_question() { 

     $(".option").each(function() { 
      $(this).fadeTo("slow", 0.1); 
     }); 

     $(".option").off("click"); 

     $(this).fadeTo("slow", 1); 

     $("#visa_alternativ").fadeTo("slow", 1); 
     $("#nästa").fadeTo("slow", 1); 
     $("#nästa").on("click", nästa); 

     select = $(this).text(); 
} 

$("#visa_alternativ").on("click", function() { 
      $(".option").each(function() { 
       $(this).fadeTo("slow", 1); 
      }); 

      $(".option").on("click", click_question); 
      $(this).fadeTo("slow", 0.2); 
      $("#nästa").fadeTo("slow", 0.2); 
}); 

这是莫名其妙的是,函数调用​​,这里的功能让我们的随机问题。​​正常工作,但如果我点击“Visa alla alternativ”,它会根据我点击“visa alla anlternativ”的次数调用更多的问题。有一次,在我做了与each()有关的问题之前,我问了这里的问题,但现在我遇到了类似的问题,但有点不同。我需要帮助并告诉我我在做什么错了each()函数?

编辑:

好吧,发现,如果我把$( “#下一步操作”)上( “点击”,下一步操作)。在它正在工作的功能之外,但不是当我将它放入函数时,正如你上面看到的那样?为什么?

+2

我会建议你避免函数名和变量名中的瑞典字符,即使它是有效的并且工作正常。 – adeneo

+0

是的,我一开始就写了这个代码,但是我将来会避免使用它。但你明白我的问题吗? – user3478007

+0

是的,但它有点牵扯,很难确切地看到代码的作用和问题。我看不出任何明显的错误,但也许如果你尝试设置[小提琴](http://jsfiddle.net) – adeneo

回答

0

它看起来像你的click_question功能多次结合(这意味着它将运行多次):

$(".option").on("click", click_question); // bound to each .option here 
function nästa() { 
    answer.push(select); 
    count_click(); 
    $(".option").each(function() { 
     $(this).fadeTo("slow", 1); 
     $(this).on("click", click_question); // bound again as .each iterates through them. 
    }); 
    $(this).fadeTo("slow", 0.2); 
    $("#visa_alternativ").fadeTo("slow", 0.2); 
    $("#tillbaka_question").fadeTo("slow", 1); 
    clicks.length = 1; 
} 

要么不绑定多次,或使用.one代替.on

+0

是的,我发现我不应该把$(“#nästa” ).on(“click”,nästa);进入click_question ...但是为什么?因为我希望“nästa”一旦选择了选项就可以点击。如果我把$(“#nästa”)放在(“click”,nästa)上;如果你选择了一个选项,它可以工作的功能之外。 – user3478007