0

我像这样复制 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 中它只存在 i 而不是 1 2 3 4 5)

还有一个问题:当我删除标签表上的 class="personid"

   The result is i - 1 - 2 - 3 -

当我在标签表上添加 class = "personid"

The result is 1 - 2 - 3 - 4 -

为什么会这样?因为我认为脚本只是更改 td 具有 personid 类名的变量“i”。

感谢您的帮助,我还附上了我以前的帖子,我提出了一个新问题,因为它已经被忽略了。带来不便敬请谅解!

http://stackoverflow.com/questions/11026258/html-and-javascript-auto-increment-number
4

2 回答 2

2

为了使循环按预期工作而table元素上也没有类“personid”,for 循环需要从零开始,而不是从一开始。

for (var i = 0; i <= list.length; i++)

i=1仅在tablehas时使用的原因class="personid"是因为 table 然后成为 getElementsByClassName 返回的集合中的第 0 个(第一个)元素,使您的循环从第二个(元素 1)开始,在这种情况下是第一个td

有关您的其余答案,请参阅 wnwall 的帖子。

于 2012-06-15T05:09:44.123 回答
1

IE7 不支持getElementsByClassName,所以需要提供该功能。

见:http ://robertnyman.com/2008/05/27/the-ultimate-getelementsbyclassname-anno-2008/

于 2012-06-15T05:10:09.340 回答