私が取り組んでいるJavaScript関数と戦っています。
for ループ内では、クラスが「visible」であるすべての要素を反復処理しています。そのループ内では、2 つのアクションを実行しています。
- elements[i].removeAttribute("クラス");
- elements[i].setAttribute("class", "hidden");
なぜか1だけ有効。2 次のエラーが表示されます。
Uncaught TypeError: Cannot call method 'setAttribute' of undefined
console.log; を使用して要素 [i] をログに記録した場合でも、最初の console.log 呼び出しの後、要素は存在しますが、2 番目の console.log 要素 [i] は「未定義」です
ここで何が欠けているのか、これは私を夢中にさせています。私のラップトップがそれほど高価でなければ、今頃壊れていたでしょう。ヘルプ :(
関数は次のとおりです。
function hide_visable_elements()
{
// remove body EventListener
var body = document.getElementsByTagName("body");
body[0].removeEventListener("click", hide_visable_elements, true);
var elements = document.getElementsByClassName("visible");
for (var i = 0; i < elements.length; i++)
{
console.log(elements[i]); // Works like a swiss clock
elements[i].removeAttribute("class");
console.log(elements[i]); // why elements[i] is 'undefined' now ???
elements[i].setAttribute("class", "hidden"); // << turns to useless code
}
}