JavaScript INDEX_SIZE_ERR:DOM异常1

问题描述 投票:4回答: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);
        }
  }

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

javascript html5 local-storage
1个回答
3
投票

问题是你正在创建一个新行并调用insertCell(2)。因为这大于您获得INDEX_SIZE_ERR的数字。

来自Mozilla(重点补充):

如果index为-1或等于单元格数,则将单元格作为行中的最后一个单元格附加。如果省略index或大于行数,将导致错误。

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

var contactCell = contactRow.appendChild(document.createElement("td"));
© www.soinside.com 2019 - 2024. All rights reserved.