我觉得我可能在这里犯了一个根本性的错误。我希望有人可以帮助我。
function countdown() {
x = 5;
for (i = x; i > 0; i--) {
document.getElementById('display').innerHTML = (i + " ");
}
}
这是我正在解决的问题的一个非常小的,简单的复制。
我的功能很长。在该函数中是一个变量,在这种情况下:X。
我想在元素中插入一些东西(在这种情况下:#display)X次。
我认为最好的方法是使用for循环,从X倒数1,每次插入我想要的字符串。
但是当它运行时,它只返回1.(在这种情况下,我希望它返回“5 4 3 2 1”。)
请有人向我解释为什么这不起作用?我已经在脑子里绞了几个小时。
答案 0 :(得分:3)
因为您通过为innerHTML
分配新值来覆盖每次迭代中元素的内容。你必须改为追加:
document.getElementById('display').innerHTML += (i + " ");
// ^
与
相同document.getElementById('display').innerHTML =
document.getElementById('display').innerHTML + (i + " ");
当然,如果你只是在循环中构建字符串并在循环之后设置内容会更好:
var content = '';
for (i = x; i > 0; i--) {
content += (i + " ");
}
document.getElementById('display').innerHTML = content;
这样就可以避免在每次迭代时搜索文档中的元素。但是.innerHTML
只在某种程度上有用,一旦你开始进行更多的进化操作,你还应该看看DOM操作函数(例如.appendChild
)。