2012-01-22 7 views
4

次のコードでは、上記のエラーを受け取りましたが、その理由を正確にはわかりません。私はここの他のスレッドを見てきましたが、その欠陥を見つけることはできません。JavaScript INDEX_SIZE_ERR:DOM例外1

このスクリプトの目的は、文字列の配列をlocalstorageに保存することです。これらの文字列配列は、テーブルにロードされます。

次の関数は、私のWebフォームフィールドから値を取得します -

function saveContact() { 
     var contact = [nameDOM.value, addDOM.value, townDOM.value, postalDOM.value, mobDOM.value]; 
     localStorage.setItem(window.localStorage.length, contact); 
     showContacts(); 
    } 

この関数の場所この情報テーブルに: -

function showContacts() { 
     for(i=0; i<window.localStorage.length; i++) { 
      var contactRow = cTableDOM.insertRow(i); 
      var contactCell = contactRow.insertCell(i); 
      var text = document.createTextNode(localStorage.getItem(i)); 
      contactCell.appendChild(text); 
     } 
    } 

私は受け付けており動作がこれです。テーブルに異なる「連絡先」を入力しようとすると、後者の「連絡先」の代わりに最初の「連絡先」が繰り返されます。

答えて

3

問題は、新しい行を作成し、insertCell(2)を呼び出すことです。これは数値よりも大きいので、INDEX_SIZE_ERRを取得します。 Mozillaから

(強調追加):

指標が-1又はセルの数に等しい場合、セルが行の最後のセルとして付加されています。 インデックスが省略されているか、行数より大きい場合、エラーが発生します。

また、単に新たに作成されたtdappendChildを呼び出すことができます。

var contactCell = contactRow.appendChild(document.createElement("td")); 
関連する問題