javascript在IE 7上运行

时间:2012-06-15 05:00:21

标签: javascript html

我像这样复制了一个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

2 个答案:

答案 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/