2015-04-23 90 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