我觉得我可能在这里犯了一个根本性的错误。我希望有人能帮助我。
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”)。
请有人可以向我解释为什么这行不通吗?我已经花了好几个小时动脑筋了。
最佳答案
因为您要在每次迭代中覆盖元素的内容,所以可以通过为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
)。关于javascript - Javascript:打印Y,X次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21843165/