2013-12-11 53 views
0

所以後面的故事的升技 - 我創建一個個人筆記保持「事」,我也碰到了這樣的問題:當使用我的JS數組打印時只顯示最終vaules

for (i = 0; i < note_title.length; i++) { 
    document.getElementById("current_titles").innerHTML = (note_title[i] + "<br />"); 
}; 
for (i = 0; i < note_content.length; i++) { 
    document.getElementById("current_contents").innerHTML = (note_content[i] + "<br />"); 
}; 

該代碼將只打印出最後的值,而不是整個列表。爲什麼會這樣呢?

在此先感謝。

+3

使用'.innerHTML + =' –

回答

1

您總是重置innerHTML屬性,從而覆蓋舊的值。

解決方案是將生成的HTML存儲在變量(字符串)中,並將該值設置爲循環後的innerHTML值。

不要使用innerHTML += ""。這會顯着影響您網站的性能。

var currentTitlesStr = ""; 

for (i = 0; i < note_title.length; i++) { 
    currentTitlesStr += note_title[i] + "<br />"; 
} 
document.getElementById("current_titles").innerHTML = currentTitlesStr; 


var noteContentsStr = ""; 

for (i = 0; i < note_content.length; i++) { 
    noteContentsStr += note_content[i] + "<br />"; 
} 
document.getElementById("current_contents").innerHTML = nodeContentsStr; 
+1

+1使用變量,而不是直接的innerHTML我 –

+0

會嘗試了這一點,謝謝。 – Night

+0

您錯過了+ =在current_titles上,但工作很好 - 感謝您的快速響應:D – Night

0

添加+ =代替=

for (i = 0; i < note_title.length; i++) { 
    document.getElementById("current_titles").innerHTML += (note_title[i] + "<br />"); 
}; 
for (i = 0; i < note_content.length; i++) { 
    document.getElementById("current_contents").innerHTML += (note_content[i] + "<br />"); 
}; 
+0

正如我所說,由於性能原因,不推薦此解決方案。您在每次迭代中重寫整個HTML! – ComFreek