2

サイズ (セル単位) が不明なセルをテーブルに動的に挿入しようとすると、「インデックスまたはサイズが負の値であるか、許容値を超えています」というメッセージが表示されました。エラー :

    function addTableRow(id, at)
    {
        at = typeof at !== 'undefined' ? at : 0; 
        var table=document.getElementById(id);
        var row=table.insertRow(at); 
            var cells = table.rows[0].cells.length;
            for(var i = 0; i < cells; ++i)
            {
                  row.insertCell(i);
                  row.className="success";
              row.innerHTML = "OMG";
            }
    }

そして、「for」にアラートを入れると、エラーが2行目に発生します。どこかで何かを見逃していると思いますか?

4

1 に答える 1

1

tr一部を設定するときに、の内容をオーバーライドしてinnerHTMLいます。これにより、最初に作成された が消去され、td存在しない場合row.cells[0]は作成できませんrow.cells[1]。これにより、無効なインデックス エラーが発生します。

innerHTML代わりに、新しく作成されたセルの を設定することで問題を解決できます。

for (var i = 0; i < cells; ++i) {
    var cell = row.insertCell(i);
    cell.className = "success"; // or row.className?
    cell.innerHTML = "OMG";
}

jsFiddle でのライブ デモ

于 2013-11-01T23:25:22.913 に答える