我的问题很简单。我在 for 循环中使用 setTimeout ,在运行时产生错误说:
Uncaught TypeError: Cannot call method 'setAttribute' of undefined
我对 javascript 的经验很少(为了学习,我跳过了 jQuery),我认为这与我调用 setTimeout 的方式有关。
看看我的函数,我想知道为什么匿名函数内部没有“元素”。
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)
{
elements[i].removeAttribute("class");
setTimeout(function() { elements[i].setAttribute("class", "hidden") }, 300);
}
}