我正在与我正在处理的 javascript 函数作斗争。
在 for 循环中,我正在迭代所有具有“可见”类的元素,在该循环中,我正在执行两个操作。
- 元素[i].removeAttribute("class");
- 元素[i].setAttribute("class", "hidden");
出于某种原因,只有 1 是有效的。2产生一个错误说:
Uncaught TypeError: Cannot call method 'setAttribute' of undefined
即使我使用 console.log 记录元素[i];在第一个 console.log 调用后元素存在,但在第二个 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
}
}