开发者问题收集

JavaScript INDEX_SIZE_ERR:DOM 异常 1

2012-01-22
4144

在下面的代码中,我收到了上述错误,但不确定具体原因。我查看了这里的其他线程,但似乎找不到错误。

该脚本的目的是将字符串数组保存到本地存储中。然后,将这些字符串数组加载到表中。

以下函数从我的 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);
        }
  }

我收到的行为是这样的;当我尝试在表中输入不同的“联系人”时,会重复第一个“联系人”,而不是后面的“联系人”。

1个回答

问题在于您正在创建新行并调用 insertCell(2) 。由于该值大于数字,因此您得到了 INDEX_SIZE_ERR。

来自 Mozilla (强调添加):

If index is -1 or equal to the number of cell, the cell is appended as the last cell in the row. If index is omitted or greater than the number of rows, an error will result.

您也可以在新创建的 td 上调用 appendChild

var contactCell = contactRow.appendChild(document.createElement("td"));
Dennis
2012-01-22