Javascript for循环不循环使用连接字符串

时间:2014-07-17 16:27:54

标签: javascript

HTML

<div id="this1"></div>

JS

var total = 5;
for (var i=0; i<total; i++){
    var id = "this" + i.toString();
    var s= document.getElementById("this1");
    s.innerHTML += id;
    s.innerHTML += "<br/>";
}

输出

this0
this1
this2
this3
this4

我想要的是将元素选择器更改为var id。

var s= document.getElementById(id);

当我这样做时,循环迭代一次并停止。如果我将for循环i更改为1,2,3等,并将html div id与该IE匹配:

HTML

<div id="this3"></div>

JS

for (var i=3; i<total; i++){

输出

this3

我得到了一个成功的输出,就像我应该的那样。但是,在0处启动迭代器时,我得到1个循环,就是这样。

有什么根本的东西,我没有注意到我的半醒?

2 个答案:

答案 0 :(得分:1)

这是因为你的循环是基于0的,所以你需要一个id为this0否则当你尝试对未定义的东西.innerHtml时会抛出异常。

<div id="this0"></div>
<div id="this1"></div>
<div id="this2"></div>
<div id="this3"></div>
<div id="this4"></div>

var total = 5;
for (var i=0; i<total; i++){
    var id = "this" + i;
    var s= document.getElementById(id);
    s.innerHTML += id;
    s.innerHTML += "<br/>";
}

此外,您不需要toString js知道转换它。

小提琴:http://jsfiddle.net/75jah/

答案 1 :(得分:1)

如果您没有相应的元素(<div id="this0">,如果您从i = 0开始),那么您将获得Uncaught TypeError: Cannot read property 'innerHTML' of null并且脚本将停止。