0
내가 다음 코드Javascript에서 클로저를 사용할 때 mouseover 이벤트가 작동하지 않는 이유는 무엇입니까?
이<ul>
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
</ul>
var lists = document.getElementsByTagName("li");
for(var i=0, len = lists.length; i< len; i++){
lists[i].onmouseover = function(){
console.log(i);
}(i);
}
예상 결과 : 마우스가 각 li
을 통해, 내가 콘솔에 0 또는 1, 2 또는 3을 가지고 있지만 mouseover
에서 페이지를 새로 고칠 때 난 단지 그 수를 받았을 때, 아무도 왜 그런지 압니까?
는 return 문이 필요합니까? 다음과 같이 할 수 있습니다 : 'code' (function (index) { ) [index] .onmouseover = function() { console.log (i); }; }) (i);'code' 죄송합니다. , 나는 코멘트에 코드를 형식화하는 방법을 모르겠다. – user2301368
네, 그렇게 할 수 있습니다. 즉시 실행 된 기능을 "한 단계 위"로 이동해야합니다. 그것은 아무것도 변경하지 않지만, 그것은 여전히 같은 방식으로 작동합니다. –
대단히 감사합니다, Felix Kling, 귀하의 답변이 매우 자세합니다. 귀하의 요지가 있습니다. – user2301368