2014-02-18 41 views
0

我觉得我可能在这里犯了一个根本性的错误。我希望有人能帮助我。Javascript:打印Y,X倍

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

你可能是指''innerHTML + = i +“”'' – Indy

回答

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),一旦你开始做更多的演化操作。

+0

你用五秒钟的时间击败了我!无论如何+1 – rvighne

+0

非常感谢! :)并感谢提示:) – user3321463

相关问题