Как я могу поместить форму в div и просматривать вопрос за вопросом

#javascript #html #jquery

Вопрос:

у меня есть форма с 13 вопросами, но я хотел бы поместить ее в небольшой разделитель, чтобы сначала я увидел вопрос 1, стрелкой вправо перейдите к вопросу 2, затем к вопросу 3. Стрелкой влево вернитесь к последнему вопросу. Я новичок в этом, поэтому был бы признателен вам за помощь. Спасибо, это часть моей формы и моей печальной попытки, которую я использую back-1 back-2 для обмена фоновыми изображениями

 $(".right-arrow").on('click', () =gt; {  $("#interview-map").attr("hidden", "")  $(".titulo").attr("hidden", "")  $(".fuentestyle").removeAttr('hidden')  $(".container").removeClass("back-1").addClass("back-2")  }) 
 lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"gt;lt;/scriptgt; lt;div class="container back-1 py-3 h-100"gt;  lt;div class="location-container col-12"gt;  lt;label for="inputAddress2" class="titulo form-label"gt;¿Whats your address? lt;/labelgt;   lt;div id="interview-map" class="row"gt;  lt;div class="locate"gt;  lt;pgt;show my positionlt;/pgt;  lt;input id="track" type="checkbox" /gt;  lt;/divgt;  lt;/divgt;  lt;img class="right-arrow" src="assets/img/right_arrow.png" alt=""gt;  lt;/divgt;  lt;div class="col-md-12"gt;  lt;form id="form_interview" class="col-lg-12 row g-3 mx-10 my-10"gt;  lt;div id="interview-address" class="fuentestyle col-12" hiddengt;  lt;label for="referencia" class="form-label"gt;Add your address: lt;/labelgt;  lt;input type="text" class="form-control" id="referencia" placeholder="Reference"gt;  lt;/divgt;   lt;div class="mb-3" hiddengt;  lt;label for="disabledSelect" class="form-label"gt;¿Question fuente?lt;/labelgt;  lt;select id="fuente" class="form-select form-select-sm" aria-label=".form-select-sm example"gt;  lt;option id="fuente-0" selected class="form-control"gt;lt;/optiongt;  lt;option id="fuente-1" value="1"gt;lt;/optiongt;  lt;option id="fuente-2" value="2"gt;lt;/optiongt;  lt;option id="fuente-3" value="3"gt;lt;/optiongt;  lt;option id="fuente-4" value="4"gt;lt;/optiongt;  lt;/selectgt;  lt;/divgt;  lt;div class="mb-3" hiddengt;  lt;label for="disabledSelect" class="form-label"gt;Question construidolt;/labelgt;  lt;select id="construido" class="form-select form-select-sm" aria-label=".form-select-sm example"gt;  lt;option id="construido-0" selected class="form-control"gt;lt;/optiongt;  lt;option id="construido-1" value="1"gt;lt;/optiongt;  lt;option id="construido-2" value="2"gt;lt;/optiongt;  lt;/selectgt;  lt;/divgt;  lt;div class="col-12" hiddengt;  lt;label for="dias_agua" class="form-label"gt;Question dias_agua lt;/labelgt;  lt;input type="text" class="form-control" id="dias_agua" placeholder="Enter a number"gt;  lt;/divgt;  lt;div class="col-12" hiddengt;  lt;label for="horas_agua" class="form-label"gt;Question horas_agua lt;/labelgt;  lt;input type="text" class="form-control" id="horas_agua" placeholder="Enter a number to 24"gt;  lt;/divgt; 

Ответ №1:

Лично я бы постарался сделать свое приложение более ориентированным на данные, но если вы не можете изменить саму форму, то вы могли бы сделать что-то подобное…

 let index = 1;  function back() {  index--;  update(); }  function next() {  index  ;  update(); }  function update() {  // Find all questions  const questions = document.querySelectorAll("[id^='question-']");    // Hide all questions  questions  .forEach(question =gt; {  question.style.display = "none";  });    // Show the active question  const activeQuestion = document.getElementById("question-"   index);  if (activeQuestion != null)  activeQuestion.style.display = "block";    // Hide/Show the buttons according to which question is being shown  document.getElementById("back").style.display = index lt;= 1 ? "none" : "block";  document.getElementById("next").style.display = index gt;= questions.length ? "none" : "block"; }  update(); 
 lt;div id="question-1"gt;Question 1lt;/divgt; lt;div id="question-2"gt;Question 2lt;/divgt; lt;div id="question-3"gt;Question 3lt;/divgt; lt;div id="question-4"gt;Question 4lt;/divgt; lt;div id="question-5"gt;Question 5lt;/divgt; lt;button id="back" onclick="back()"gt;Backlt;/buttongt; lt;button id="next" onclick="next()"gt;Nextlt;/buttongt; 

Примечание:

  • В приведенном выше решении используется собственный javascript (jQuery не требуется).
  • Этот код может быть написан более эффективно, например, вам действительно не нужно запрашивать все вопросы при каждом обновлении. Вместо этого вы можете сделать это один раз при загрузке страницы.