2014-04-08 57 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