0

我遇到了一个错误,我不知道如何解决它,请帮助:) 代码:

var ls_contextid1=JSON.parse(localStorage.getItem('completedArray')) || [];
      for (var i = 0; i < ls_contextid1.length; i++){
        var obj = ls_contextid1[i];
        for (var key in obj){
          var value = obj[key];
          var checkbox=document.getElementsByName(value);
          doc[i] =value;

          var att = document.createAttribute('checked');      
          att.value = 'checked';   

        checkbox.setAttributeNode(att);

        }
      }

}

这是错误消息:

Uncaught TypeError: checkbox.setAttributeNode is not a function

本地存储包含 json:

[{"contextid":"470"},{"contextid":"468"},{"contextid":"467"},{"contextid":"463"},{"contextid":"463"},{"contextid":"464"}]

和 HTML 代码:

<input name="470" type="checkbox" disabled="disabled" style="margin-left:50px;">

你能帮助我吗?

4

3 回答 3

3

getElementsByName()返回文档中具有给定名称的节点列表集合。所以你应该通过做访问第一个元素

checkbox[0].setAttributeNode(att);
于 2016-11-17T10:45:26.780 回答
3

document.getElementsByName(value);返回一个节点列表,而不仅仅是一个节点。您应该遍历列表并在列表setAttributeNode()中的每个节点上使用。

于 2016-11-17T10:45:51.297 回答
2

getElementsByName返回集合,因此您需要使用checkbox[0].setAttributeNode(att);. 我还建议您在设置属性之前检查元素是否存在。

于 2016-11-17T10:45:50.413 回答