0

次のエラーが表示されます。

TypeError: document.getElementById("myTable") is null

on document.write(document.getElementById("myTable").rows[i].innerHTML); 終わりのないループに陥ります。

誰かが私が間違っていることを教えてもらえますか? ありがとうございました。

私のコード:

<script type="text/javascript">
function colorRows(){
count=document.getElementById("myTable").rows.length;
alert("count is:"+count);
            for (i=0;i<=count;i++){
                if (i%2===0){
                    document.write(document.getElementById("myTable").rows[i].innerHTML);
                }
            }
}
</script> 
</head>

<body>
<table id="myTable">

<tr>
    <th>emp_id</th>
    <th>name</th>
    <th>age</th>
</tr>
<tr>
    <td>1</td>
    <td>vaani</td>
    <td>35</td>
</tr>
<tr>
    <td>2</td>
    <td>Ramu</td>
    <td>37</td>
</tr>
<tr>
    <td>3</td>
    <td>Iniyan</td>
    <td>5</td>
</tr>
<tr>
    <td>4</td>
    <td>Mickey</td>
    <td>10</td>
</tr>
</table>
<form method="post" action="JavaScript:colorRows();">
<input type="submit" value="Submit" />
</form>
</body>
</html>
4

3 に答える 3

1

これはdocument.write、最初にループで実行するときに dom をクリアするとテーブル要素がなくなりdocument.write、2 回目に実行すると がdocument.getElementById("myTable")提供されるためnullです。そのため、ブラウザはスクリプトを停止してエラーを提供します。

于 2012-09-18T06:33:30.613 に答える
0

コードを実行すると同じエラーが発生します。myTable を for 以外の新しい変数に入れました。それは正常に動作します。そのように。

var myTableVar = document.getElementById("myTable");
    var i;
    for (i=0;i<=count;i++){
        alert("i = " + i);
        if (i%2===0){
            document.write(myTableVar.rows[i].innerHTML);
        }
    }

完全なコード:

<html>
<head>
<script type="text/javascript">
    function colorRows(){
    count=document.getElementById("myTable").rows.length;
    alert("count is:" + count);
    var myTableVar = document.getElementById("myTable");
    var i;
    for (i=0;i<=count;i++){
        alert("i = " + i);
        if (i%2===0){
            document.write(myTableVar.rows[i].innerHTML);
        }
    }
}
</script> 
</head>

<body>
<table id="myTable">

<tr>
    <th>emp_id</th>
    <th>name</th>
    <th>age</th>
</tr>
<tr>
    <td>1</td>
    <td>vaani</td>
    <td>35</td>
</tr>
<tr>
    <td>2</td>
    <td>Ramu</td>
    <td>37</td>
</tr>
<tr>
    <td>3</td>
    <td>Iniyan</td>
    <td>5</td>
</tr>
<tr>
    <td>4</td>
    <td>Mickey</td>
    <td>10</td>
</tr>
</table>
<form method="post" action="JavaScript:colorRows();">
<input type="submit" value="Submit" />
</form>
</body>
</html>
于 2012-09-18T06:37:47.197 に答える
0

これを試して

function colorRows(){
    var table = document.getElementById("myTable");
    count=table.rows.length;
    alert("count is:"+count);
    for (i=0;i<=count;i++){
        if (i%2===0){
            document.write(table.rows[i].innerHTML);
        }
    }
}

とにかくテーブルに一度だけアクセスするのが最善です。document.write() は document.open() を呼び出すため、ページをクリアします

于 2012-09-18T06:40:53.307 に答える