2012-10-20 3 views
-2

JSFiddleJavaScript에서 클릭 이벤트 핸들러를 어떻게 동적으로 추가합니까?

간단한 루프가 있습니다. 아무에게도 설명 할 수없는 이유는 무엇입니까?

여기

JS (너무 바이올린에있다) 코드입니다 -

var anchors = document.getElementsByTagName('a'); 

for (var i, anchor; anchor = anchors[i]; i++) { 
    console.log('looping'); 
anchor.addEventListener("click", setNavigation, false); 
}​ 

HTML -

당신은 값 0i를 초기화하는 것을 잊었다
​<a href="#"></a> 
<a​​​​​​​​​​​​​​​​​​​​ href="lol"></a>​​​​​​​​​​​​​​​​​​​​​​​​​​ 
+0

제목과 피들을 수정하십시오. – j08691

+0

귀하의 바이올린에는 앵커가 없기 때문에 아무 것도하지 않으며 문제를 재현하지 않습니다 (이는 데모를 제공하는 전체 목적 임). –

답변

3

. for (var i=0, …을 사용하십시오.

Btw 일반적으로 루프 조건의 진리 값을 찾는 대신 반복되는 모음의 length보다 작은 것으로 확인합니다 (i). 그런 다음 추가 변수가 필요하지 않습니다. anchor :

var anchors = document.getElementsByTagName('a'); 
for (var i=0; i<anchors.length; i++) { 
    console.log('looping'); 
    anchors[i].addEventListener("click", setNavigation, false); 
}​ 
+0

고마워요! 나는 바보 같다 :/: S – NamanyayG

+0

'anchors.length'는 변경 될 수있는 값입니다. 그래서, for (var i = 0, j = anchors.length; i

+0

이벤트 리스너를 추가 할 때 발생하지 않습니다. 물론, * live *'NodeList' * 및 *를 루프 중에 조작하면 조심해야합니다. – Bergi

관련 문제