2016-06-13 2 views
0

Я пытаюсь создать страницу jsp, которая генерирует список вопросов. Вопросы получены из базы данных правильно и создается соответствующий div. Есть 55 вопросов.JSP + Динамический CSS при нажатии кнопки

Что я хочу сделать, это сделать только первый вопрос, который будет отображаться, и установить остальное. Затем на кнопку отправки нажмите текущий вопрос [1], и вопрос [2] становится видимым.

Ничего, что я пытаюсь в javascript, похоже, не имеет никакого влияния. Может ли кто-нибудь указать мне в правильном направлении?

   <div id="questionContainer"> 
        <%      for (int ques = 1; ques < 56; ques++) { 
          out.println("<div id ='question" + ques + "' name='question" + ques + "'class='questionVisible'>"); 
          out.println("<h2 class='page-header'>Question" + ques + "</h2>"); 
          if (iterate.hasNext()) { 

           //out.println(row[0]); 
           //out.println(row[1]);                     
           //out.println(row[0]); 
           String[] row = (String[]) iterate.next(); 
           if (row[0].equals("1")) { 
            out.println("<p id='question'>" + row[1] + "</p><br/>"); 
            out.println("<p id='ansA'><input type='radio' name='answer" + ques + "' value='A' checked>" + row[2] + "</p>"); 
            out.println("<p id='ansA'><input type='radio' name='answer" + ques + "' value='B' checked>" + row[3] + "</p>"); 
            out.println("<p id='ansA'><input type='radio' name='answer" + ques + "' value='C' checked>" + row[4] + "</p>"); 
            out.println("<p id='ansA'><input type='radio' name='answer" + ques + "' value='D' checked>" + row[5] + "</p>"); 
            out.println("<button class='btn' id='btnPAQues" + ques + "' type='button' name='btnPAQues" + ques + "' onclick='onSubmitBtn();'>Submit</button>"); 
           } else if (row[0].equals("2")) { 
            out.println("<p id='question'>" + row[1] + "</p><br/>"); 
            out.println("<p id='ansA'><input type='radio' name='answer" + ques + "' value='A' checked>" + row[2] + "</p>"); 
            out.println("<p id='ansA'><input type='radio' name='answer" + ques + "' value='B' checked>" + row[3] + "</p>"); 
            out.println("<p id='ansA'><input type='radio' name='answer" + ques + "' value='C' checked>" + row[4] + "</p>"); 
            out.println("<p id='ansA'><input type='radio' name='answer" + ques + "' value='D' checked>" + row[5] + "</p>"); 
            out.println("<p id='ansA'><input type='radio' name='answer" + ques + "' value='E' checked>" + row[6] + "</p>"); 
            out.println("<button class='btn' id='btnPAQues' type='submit' name='submit' onsubmit='onSubmitBtn'>Submit</button>"); 
           } else if (row[0].equals("3")) { 
            out.println("<p id='question'>" + row[1] + "</p><br/>"); 
            out.println("Answer: <p id='ansA'><input type='text' name='answer" + ques + "'</p><br/><br/>"); 
            out.println("<button class='btn' id='btnPAQues' type='submit' name='submit' onsubmit='onSubmitBtn'>Submit</button>"); 
           } 
          } 
          out.println("</div>"); 
         } 
        %> 

       </div> 


<script> 

for(int x= 2; x <56; x++) 
{ 
    document.getElementById("question"+x).style.visibility = "questionHidden;"; 
} 

    document.getElementById("btnPAQues1").onclick = onSubmitBtn(); 
    function onSubmitBtn() { 
     document.getElementById("question1").style.visibility = "hidden;"; 
    } 
</script> 

ответ

1

попробовать эту идею: во-первых, показать все вопросы добавить DIV на каждый вопрос

<div class="trigger" > <p id="question">...Submit</button> </div> 

затем добавить этот JS-код:

$(".trigger:first").show(); 

$("button").click(function() { 
    var $next = $(".trigger:visible").hide().next(".trigger"); 
    if (!$next.length) 
     $next = $(".trigger:first"); 

    $next.show(); 
}); 

пример: http://jsfiddle.net/huH7p/9/

+0

Это работает в этом примере, но не реализовано на странице. Может ли jsp генерировать html каким-то образом препятствовать взаимодействию javascript с элементами? –

+0

Normaly no положить JS код до тег в

0

Не используйте Javascript выписывать вопросы. Поместите все вопросы в стандартный HTML с классом CSS, который делает их изначально скрытыми, кроме первого вопроса. Затем на каждом представлении сделать соответствующий видимым, скрывая предыдущий.

Можете ли вы использовать веб-службы? Обычный способ сделать это - использовать JSP для настройки страницы, а затем использовать Javascript для вызова веб-сервисов для каждого вопроса. Поэтому, когда загрузка страницы вызывает первый вопрос. Когда пользователь нажимает на отправку вызова для следующего. И так далее.

+0

В идеале Я бы предпочел, чтобы не. Любая идея, если это возможно без веб-сервисов? –

+0

Это означало бы, что если какие-либо вопросы будут изменены или расширены, или число увеличится или уменьшится, потребуется обширная обработка кода. Следовательно, использование базы данных и динамическое создание questiondivs –

+0

Извините, когда я посмотрел на ваш код, похоже, что Javascript выписывал вопросы. Вы делаете кругосветное путешествие по каждому вопросу? – markbernard

Смежные вопросы