【问题标题】:javascript run on IE 7 [duplicate]javascript在IE 7上运行[重复]
【发布时间】:2012-06-18 04:16:55
【问题描述】:

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

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    为了使循环按您预期的方式工作,而 table 元素上也没有类 'personid',for 循环需要从 开始,而不是从一开始。

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

    仅当table 具有class="personid" 时才使用i=1 的原因是因为table 成为getElementsByClassName 返回的集合中的第0 个(第一个)元素,使您的循环从第二个(元素1)开始,在本例中是第一个 td

    请参阅 wnwall 的帖子以获取其余答案。

    【讨论】:

    • 如果在这种情况下循环从零开始,那么变量i(在这种情况下是0(零))的值替换TABLE的内容,因为getElementsByClassName也返回了表格元素
    • 是的,但我对问题的措辞印象深刻,OP 添加了该问题是为了修复错误并想知道为什么没有它就无法工作。仔细阅读 OP 的问题,看看您是否支持该反对票。
    • 是的。请更新您的答案以使其更完整。在答案中添加解释:为什么 Ryan 必须更改循环以从零开始。
    • 为后代编辑,因为原则上你是对的。我想指出的是,您取消的赞成票是 OP 的。 (也就是说,他已经明白了:P)
    【解决方案2】:

    IE7不支持getElementsByClassName,所以你需要提供那个功能。

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

    【讨论】:

    • 打败我的另一半。
    • 抱歉,我下载了 js 文件并将其包含到我的 HTML 文件中。但它不起作用。能否请您解释有关如何使用它的更多信息。谢谢
    猜你喜欢
    • 2014-01-09
    • 2013-05-11
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 2013-01-13
    • 2013-10-07
    • 2015-08-01
    • 1970-01-01
    相关资源
    最近更新 更多