2013-05-01 43 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