2012-01-22 78 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"));