我正在與我正在處理的JavaScript函數作鬥爭。變量變成未定義的循環內
在for循環中,我遍歷所有具有類「可見」的元素,在該循環中 我正在執行兩個操作。
- elements [i] .removeAttribute(「class」);
- elements [i] .setAttribute(「class」,「hidden」);
由於某些原因,只有1是有效的。 2產生錯誤說:
Uncaught TypeError: Cannot call method 'setAttribute' of undefined
即使我使用console.log記錄元素[i];之後第一個console.log調用 該元素存在,但在第二個console.log元素[i]是'undefined'
我到底錯過了什麼,這讓我瘋狂,如果我的筆記本電腦不是'如此昂貴的 它現在會被打破。說明:(
這裏的功能:。
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
}
}
只是一個猜測。當你刪除'class'時,元素會從數組中刪除,因爲它不再符合條件。你有沒有想過使用jQuery?它會讓事情變得更容易。 –
如果你已經從元素中移除了''''類,你也將它從具有該類的元素集中移除了。基本上,你擦除了這個元素。 – DevlshOne
如果使用Jquery的.removeClass(),則更簡單。 –