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 でデコードできるようにするにはどうすればよいですか。 4 5)

もう 1 つの質問: タグ テーブルの 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

要素にクラス「personid」がなくてもループが期待どおりに機能するためには、for ループを 1 ではなく0tableから開始する必要があります。

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

hasi=1の場合にのみ機能する理由は、 table が getElementsByClassName によって返されるコレクションの 0 番目 (最初) の要素になり、ループが 2 番目 (要素 1)、この場合は最初の.tableclass="personid"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 に答える