这两个示例都是节点列表,但只有第一个有效。
按预期工作:
var apple = document.getElementById('apple');
var nodeList = document.getElementsByTagName('li'); // Line of concern
var array = [];
for(var i = 0; i < nodeList.length; i++) {
array[i] = nodeList[i];
}
for(var i = 0; i < array.length; i++) {
array[i].style.display = 'none';
}
不起作用(错误是:“Uncaught TypeError: Cannot set property 'display' of undefined”):
var apple = document.getElementById('apple');
var nodeList = apple.parentNode.childNodes; // Line of concern
var array = [];
for(var i = 0; i < nodeList.length; i++) {
array[i] = nodeList[i];
}
for(var i = 0; i < array.length; i++) {
array[i].style.display = 'none';
}
因此,如果两个变量“nodeList”都是实际的节点列表,那么为什么我不能在后一个示例中设置属性,也没有类似的东西。
另外,我该如何解决后者的问题?
对于这个问题,请不要使用 jQuery。
谢谢你。