다음은 해당 페이지의 DOM 구조입니다.
- 1
- 2
- 3
;li>Four li> 다음과 같습니다:
//ID를 기반으로 객체 가져오기
function id(v) { return document.getElementById(v) }
//태그를 기반으로 객체 가져오기
//1,2,3,4가 나타날 것으로 예상됩니다.
//결과 항상 5
alert("(i 1) "항목"을 클릭했습니다);
}
}
}
위 현상은 왜 발생하나요? 그 이유는 " for 에 바인딩된 이벤트가 즉시 실행되지 않기 때문입니다." 수정된 코드는 다음과 같습니다.
코드 복사
코드는 다음과 같습니다.
// ID를 기준으로 객체 가져오기
function id(v) { return document.getElementById(v) }
//태그에 따라 객체 가져오기
function tag(element, t); return element.getElementsByTagName(t) }
var t = i
li [i].onclick = function() {
alert("" t "번째 "항목"을 클릭했습니다);
}
})();
}
}
코드를 테스트하면 모든 것이 정상입니다. 일반적으로 루프 변수 i를 onclick 이벤트에 해당하는 핸들러 함수에 전달합니다.