Javascript:打印Y,X次

时间:2014-02-18 02:23:27

标签: javascript loops for-loop printing innerhtml

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

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”。)

请有人向我解释为什么这不起作用?我已经在脑子里绞了几个小时。

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)。