これら 2 つの例はどちらもノード リストですが、最初の例だけが機能します。
期待どおりに動作します:
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: プロパティ 'display' を未定義に設定できません"):
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 を使用しないでください。
ありがとうございました。