我觉得我可能在这里犯了一个根本性的错误。我希望有人能帮助我。

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/

10-10 00:28