2016-08-01 74 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

有什麼問題?你有錯誤嗎?順便說一句在你的函數中,你將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]; 

相反,你需要的價值將問題附加到一個變量,然後添加它分區。這樣,兩個問題都會被添加到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; 
}