2015-04-23 71 views
-3
var friends = ["Miha", "Artur", "Karen", "zollex"]; 
var len = friends.length; 
var friend = 0; 
var msg = ''; 
var i; 
for (i = 0; i <len; i++){ 
    friend = (i + 1); 
    msg+= "Friend number " + friend + ":"; 
    msg+=friends[i] + "<br />"; 
    document.write(msg); 
} 

我有以下代碼寫在上面。和它outpust以下結果:JavaScript簡單的循環

朋友數1:米哈
朋友數1:米哈
朋友數2:阿圖爾
朋友數1:米哈
朋友數2:阿圖爾
朋友數3:卡倫
朋友數1:米哈
朋友數2:阿圖爾
朋友數3:卡倫
朋友數4:zollex

雖然應該只有4個朋友。我真的很好奇爲什麼document.write多次重複相同的名字。

+0

你的出門功能總是打一次電。你在forloop上展示它..在 –

回答

6

因爲你用+ =在每次迭代時建立了字符串,並且你沒有在每次迭代時重置它。

msg += "Friend number " + friend + ":"; 
    ^^ 
msg += friends[i] + "<br />"; 
    ^^ 

移動以外的document.write for循環或者設置msg回空在每個迭代上。

var friends = ["Miha", "Artur", "Karen", "zollex"]; 
var len = friends.length; 
var friend = 0; 
var msg = ''; 
var i; 
for (i = 0; i <len; i++){ 
    friend = (i + 1); 
    msg += "Friend number " + friend + ":"; 
    msg += friends[i] + "<br />"; 
} 
document.write(msg); 
+0

謝謝,算出來了! –

2
for (i = 0; i <len; i++){ 
    msg = ''; 
    friend = (i + 1); 
    msg+= "Friend number " + friend + ":"; 
    msg+=friends[i] + "<br />"; 
    document.write(msg); 
} 

你正在覆蓋每個循環的msg變量,而你應該在每一個循環中清除它!

+0

之外,爲什麼在地球上降低價格? – Enjoyted

+0

可能是因爲你的第一個版本是亂碼和錯誤的。 – epascarello

+0

我剛剛失敗了一個副本過去,沒有必要downvote 5次後有人發佈答案; – Enjoyted