저는 현재 작업중인 javascript 함수로 전쟁 중입니다.변수가 for 루프 내에서 정의되지 않은 변수로 변합니다.
for 루프 내부에서 루프 내에서 "visible"클래스로 모든 요소를 반복합니다. 두 가지 작업을 수행 중입니다.
- 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]가 '정의되지 않음'입니다.
내 노트북이 여기에없는 경우 무엇이 내가 미쳐 버리는 지, 너무 비싸서 그것은 지금 쯤이상 파괴되었을 것입니다. ..
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
}
}
그냥 맞춰보세요. '클래스'를 제거하면 요소가 더 이상 조건에 맞지 않으므로 배열에서 삭제됩니다. jQuery 사용에 대해 생각해 보셨습니까? 그것은 일을 더 쉽게 만듭니다. –
요소에서'class'를 삭제했다면, 그 클래스를 가지고있는 요소들의 집합으로부터 제거했습니다. 기본적으로 그 요소는 지워졌습니다. – DevlshOne
Jquery의 .removeClass()를 사용하면 더 간단합니다. –