2016-08-01 2 views
1

Я новичок в JS, я пытаюсь получить доступ к следующему элементу массива с помощью функции onclick, но не повезло.Не удалось получить доступ к следующему элементу массива javascript

var i, len; 
 
     
 
    function quiz() { 
 
    var quiz_questions = [ 
 
    "who is the founder of facebook?", 
 
    "who is the founder of google?" 
 
    ]; 
 
      
 
    len = quiz_questions.length; 
 

 
    for(i = 0; i < len; i++) { 
 
    document.getElementById("demo").innerHTML = quiz_questions[i]; 
 
    } 
 
}
<button onclick="quiz();">Click</button> 
 
<p id="demo"></p>

может кто-нибудь объяснить мне, что я сделал неправильно здесь.

+0

В чем проблема? У вас есть ошибка? BTW В вашей функции вы устанавливаете innerHTML последнему элементу вашего массива. Если вам нужно добавить все элементы вашего массива, вам нужно изменить свой код: document.getElementById («demo»). InnerHTML + = quiz_questions [i]; –

+0

В вашем коде не было никакой ошибки. Выход будет последним элементом массива, потому что он переопределяет предыдущее содержимое массива. –

+0

@ oliv37 Нет, я не получаю никаких ошибок. Когда я нажимаю кнопку, я получаю второй элемент массива, когда я снова нажимаю кнопку все тот же второй элемент массива. – Jason

ответ

0

Ваша проблема в том, что вы повторяете каждый вопрос каждый раз, когда вы нажимаете. Просто удалите цикл for и поставьте i ++ после установки вопроса. Может быть, проверка, если я меньше длины массива до этого, не будет плохой идеей.

var i, len; 
 
i = 0; 
 
     
 
    function quiz() { 
 
    var quiz_questions = [ 
 
    "who is the founder of facebook?", 
 
    "who is the founder of google?" 
 
    ]; 
 
      
 
    len = quiz_questions.length; 
 

 
    document.getElementById("demo").innerHTML = quiz_questions[i]; 
 
    i++; 
 
    if(i>=len){ 
 
     i=0; 
 
    } 
 
}
<button onclick="quiz();">Click</button> 
 
<p id="demo"></p>

0

внести изменения в вашем JavaScript, как:

var quiz_questions = [ 
"who is the founder of facebook?", 
"who is the founder of google?" 
]; 

var counter = 0; 

function quiz() 
{ 
counter++; 
document.getElementById("demo").innerHTML = quiz_questions[counter-1]; 
} 
0

Это заявление будет держать перезапись значение демонстрационной DIV

document.getElementById("demo").innerHTML = quiz_questions[i]; 

Вместо этого вы будете должны добавьте вопросы к переменной, а затем добавьте ее t o div. Таким образом, оба вопроса будут добавлены в div

var i, len; 

function quiz() { 
var quiz_questions = [ 
"who is the founder of facebook?", 
"who is the founder of google?" 
]; 

len = quiz_questions.length; 
var htmlContent = ""; 
for(i = 0; i < len; i++) { 
    htmlContent = htmlContent + quiz_questions[i] + "<br>"; 
} 
    document.getElementById("demo").innerHTML = htmlContent; 
} 
Смежные вопросы