2013-05-01 48 views
0

我已經做了一個測驗創建者,但現在我正試圖將其中的信息提取到「前端」測驗中。jquery append和「for」函數

我想建立一個這樣的循環。此外,在這裏試圖將類'.hide'添加到除'第一個創建的類'之外的類'.question-holder'的所有div。

for(var i = 0; i < questions.length; i++) 
{ 
    var q = questions[i]; 
    var answers = q.getAnswers(); 
    $(".question-holder").append("<h2 id='QuizQuestionHeadline'>" + q.getQuestion() + "</h2><div class='question-wrap'></div>");    
    $(".question-wrap").append("<ul class='answers' id='quiz-answers'></ul>");   

    for(var n = 0; n < answers.length; n++) 
    { 
     $("#quiz-answers").append("<li><input tabindex='1' type='checkbox' id='input-1'><label for='input-1'><span>"+ answers[n].getAnswer() +"</span></label></li>");   
    }; 
};  

for(var i = 2; i < questions.length; i++) 
{ 
    $(".question-holder").addClass('hide');   
}; 

凡最終的HTML通過上面的代碼創建的應該是:這裏

<div class="question-holder"> 

<h2 id='QuizQuestionHeadline'>The Question</h2> 
     <ul id='quiz-answers' class="answers"> 
     <li> 
      <input tabindex="1" type="radio" id="input-1" name="quiz-radio"> 
      <label for="input-1"><span>Answer 1</span></label> 
     </li> 
     <li> 
      <input tabindex="2" type="radio" id="input-2" name="quiz-radio" checked> 
      <label for="input-2"><span>Answer 2</span></label> 
     </li> 
     </ul> 
</div> 

任何人都可以幫助我了一點? :)

+0

現在我們知道您正在嘗試做什麼,取而代之的是什麼? – 2013-05-01 14:24:07

+1

你爲什麼要在你的循環結尾放分號? – 2013-05-01 14:24:16

+0

@LeeTaylor只是在我的手指一些默認情況下,我猜:) – Kim 2013-05-01 14:26:31

回答

0

你還是最好隱藏所有的相關申報單,但隨後只顯示你想要哪一個?

var index = 0; // 0 based, so 0 is the first question 

$(".question-holder").addClass("hide"); 
$(".question-holder").eq(index).removeClass("hide"); 

你只需要更新index變量,然後再次運行該代碼以顯示具體問題:)

+0

好的,謝謝! – Kim 2013-05-01 14:46:54

+0

不客氣 - 很高興幫助:) – Archer 2013-05-01 14:54:59

3

請注意,$(".question-holder").addClass('hide');將隱藏與類question-holder所有divs。因此for循環在這裏沒有任何意義。

for(var i = 2; i < questions.length; i++) { 
    $(".question-holder").addClass('hide');   
}; 

可以使用不同的ID對每個格做出來,然後用這個addClasshide到所有div除了一日一。


另一種簡單的解決方案是:

第一隱藏所有div然後顯示如下所示的第一行作爲代碼。

$(".question-holder").css('display', 'none'); 
$(".question-holder:first").css('display', 'block'); 
+0

謝謝,我會嘗試爲問題製作IncrementID。 – Kim 2013-05-01 14:30:46

+0

另一個簡單的解決方案是: 首先隱藏所有div,然後將第一行顯示爲下面顯示的代碼。 (「。question-holder」)。css('display','none'); (「。question-holder:first」)。css('display','block'); – 2013-05-01 14:31:48

+0

我已經添加了另一個簡單的解決方案,如果你只需要顯示第一個div;) – 2013-05-01 14:32:48