2016-09-05 2 views
2

Я новичок в Javascript и работает над созданием приложения для викторины. Все вопросы и ответы о викторине хранятся в массиве в объекте с именем «quiz». Я пытаюсь использовать цикл, чтобы приложение могло циклически перебирать вопросы одним нажатием кнопки. Тем не менее, цикл, который я использую, кажется, замораживает мою страницу. Любые указатели на то, где я ошибаюсь?Цитирование через вложенные объекты в Javascript

//sample object 
    quiz = { 
     "questions": [ 
      { 
       "question":"Question 1", 
       "a":"Answer a1", 
       "b":"Answer b1", 
       "c":"Answer c1", 
       "d":"Answer d1", 
      }, 
      { 
       "question":"Question 2", 
       "a":"Answer a2", 
       "b":"Answer b2", 
       "c":"Answer c2", 
       "d":"Answer d2", 
      } 
     ] 
    } 

//load next question on click 
     $("#next").click(function(){ 
      for (i=1; i<quiz.questions.length; i.next) { 
       $("#question").text(quiz.questions[i].question); 
      }; 
     }); 
+2

'i.next' ====>' i ++ ' –

ответ

4
for (i=1; i<quiz.questions.length; i.next) { 

i.next не изменяет значение i. Поскольку i никогда не изменяется, второе условие никогда не выполняется, поэтому цикл бесконечен.

Используйте вместо этого i++.


$("#question").text(quiz.questions[i].question); 

Каждый раз, когда вы идете вокруг петли, вы заменить текст с следующим вопросом. Вы всегда будете в конечном итоге с последним вопросом.

Нельзя использовать цикл for, если вы хотите увеличивать каждый раз при нажатии кнопки.

  • Заявление i вне функции.
  • Снимите петлю for полностью
  • Положите i++ в конце функции
  • испытания для того, когда i >= quiz.questions.length и делать ... все, что вы хотите делать, когда вы бежите из вопросов.

i=1 

По вопросу о признании i. Массивы JavaScript начинаются с 0. Вероятно, вы хотите инициализировать его как 0, а не 1.

+0

@ ᴉʞuǝ - Нет. Цикл продолжается до тех пор, пока условие не будет выполнено. Так как это никогда не происходит, цикл бесконечен. – Quentin

+0

Да, я прочитал его снова, и это имело смысл, извините. – mezmi

+0

Спасибо, это сработало отлично. – jamiealden1

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