2014-04-08 2 views
0

루프 기능에 관해서 몇 가지 실수를하고 있다고 생각합니다. 나는 퀴즈가 있고 네 가지 옵션이 있습니다. 답변을 선택하고 "nästa"를 클릭 할 때마다 선택한 답변이 저장되지만, 마음이 바뀌고 모든 옵션을 원할 경우 버튼 "visa alla alternativ"를 클릭 할 수 있습니다. 내가 옳은 일을하고 있는지 확인하기 위해 나는 어떤 질문을 첨부 했는가? "nästa"를 클릭 할 때마다 질문 수가 표시됩니다.루프 또는 다른 것으로 붙어 있습니까?

예 : 1 2 3 4 (나는 네 번을 클릭했고 네 가지 다른 질문이 나왔다.)

하지만 "visa 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); 
}); 

이 함수가 함수가 우리에게 무작위로 질문을받을 count_click();를 호출하는 것이 어떻게 든입니다. count_click();은 제대로 작동하지만 "Visa alla alternativ"를 클릭하면 "visa alla anlternativ"를 몇 번 클릭하는지에 따라 더 많은 질문이 나옵니다. 한 번 전에 내가 each()과 함께 뭔가 잘못했을 때 나는 여기서 질문을 던졌지 만, 지금은 비슷한 문제가 있지만 조금 다르다. 도움이 필요하고 each() 기능으로 내가 뭘 잘못하고 있는지 말해 주시겠습니까?

는 편집 :

음, 발견 나는 ("#의 NASTA")에 ("클릭", NASTA을) $를 넣어 경우는. 함수 밖에서는 작동하지만, 위에서 볼 수 있듯이 함수에 넣으면 작동하지 않습니다. 왜? 당신이 (이 여러 번 실행됩니다 의미)를 click_question 함수를 여러 번 바인딩처럼 보이는

+2

나는 그것이 유효하고 작동하더라도 swedish 문자를 함수와 변수 이름에서 피하도록 조언합니다. – adeneo

+0

예, 처음에는이 코드를 만들었지 만 앞으로는 사용하지 않을 것입니다. 하지만 내 질문을 이해하니? – user3478007

+0

예, 그렇지만 조금 복잡하기 때문에 코드가하는 것과 문제가 무엇인지 정확히 알기가 어렵습니다. 언뜻보기에 명백한 오류는 볼 수 없지만 [피들] (http://jsfiddle.net)을 설정하려고 시도한 경우 – adeneo

답변

0

:

$(".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"). on ("click", nästa); 함수 밖에서는 옵션을 선택했는지 여부에 관계없이 작동합니다. – user3478007

관련 문제