我像这样复制了一个Kevin S(这个网站的成员)的脚本
<table class="personid">
<tr>
<td class='personid'>i</td>
<td>Harry</td>
</tr>
<tr>
<td class='personid'>i</td>
<td>Simon</td>
</tr>
<td class='personid'>i</td>
<td>Maria</td>
</tr>
</tr>
<td class='personid'>i</td>
<td>Victory</td>
</tr>
</table>
<script>
var list = document.getElementsByClassName("personid");
for (var i = 1; i <= list.length; i++) {
list[i].innerHTML = i;
}
</script>
我不知道为什么这个脚本可以在Chrome和Firefox中顺利运行,但它不能在IE 7中运行。我怎样才能使它能在IE 7中解码。(参见IE7中它只是存在而不是1 2 3 4 5)
还有一个问题:当我删除标签表
上的class =“personid”时 The result is i - 1 - 2 - 3 -
当我在标签表
上添加class =“personid”时The result is 1 - 2 - 3 - 4 -
为什么会这样?因为我认为脚本只更改变量“i”,其中td具有personid类名。
感谢您的帮助,我还附上了我之前的帖子,并提出了一个新问题,因为它已经过去了。很抱歉给您带来不便!
http://stackoverflow.com/questions/11026258/html-and-javascript-auto-increment-number
答案 0 :(得分:2)
为了使循环按预期工作,同时table
元素上没有类'personid',for循环需要从零开始,而不是一个。
for (var i = 0; i <= list.length; i++)
仅当i=1
具有table
时才使用class="personid"
的原因是因为table成为getElementsByClassName返回的集合中的第0个(第一个)元素,使得循环开始第二个(元素1),在这种情况下是第一个td
。
请参阅wnwall的帖子,了解其余的答案。
答案 1 :(得分:1)
IE7不支持getElementsByClassName
,因此您需要提供该功能。
请参阅:http://robertnyman.com/2008/05/27/the-ultimate-getelementsbyclassname-anno-2008/