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个循环,就是这样。
有什么根本的东西,我没有注意到我的半醒?
答案 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知道转换它。
答案 1 :(得分:1)
如果您没有相应的元素(<div id="this0">
,如果您从i = 0
开始),那么您将获得Uncaught TypeError: Cannot read property 'innerHTML' of null
并且脚本将停止。