자바스크립트 마우스 오버시 오버한 버튼의 아이디값 출력 질문입니다.
글쓴이: chief / 작성시간: 수, 2013/06/05 - 3:47오후
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>이벤트 리스너추가 1</title>
<style type="text/css">
</style>
</head>
<body>
<h1>돔레벨 0 방식</h1>
<button type="button" id="btn1" title=""><span>마우스 오버</span></button>
<button type="button" id="btn2" title=""><span>마우스 클릭</span></button>
<button type="button" id="btn3" title=""><span>마우스 오버</span></button>
<button type="button" id="btn4" title=""><span>마우스 클릭</span></button>
<script type="text/javascript">
window.onload = function() {
// 돔레벨 0 방식
var i = window.document.getElementsByTagName('button');
var j;
var x;
for (j=0; j < i.length; j++ ){
x = document.getElementById(i[j].getAttribute('id')).getAttribute('id');
alert(x);
i[j].onmouseover = function() {
alert(x);
}
}
}
</script>
</body>
</html>안녕하세요.
자바스크립트 완전 초짜입니다.
위와같이 코드를 짜고 파이어폭스로 실행하면
자동으로 alert 에 버튼 4개에 대한 아이디가 연달아 나오기까지는 됩니다.
그런데 특정 버튼에 마우스를 올리면 그 버튼의 아이디값이 아닌 맨 마지막 아이디값인
btn4 만 출력이 됩니다. 1시간째 헤메도 해결못하였습니다 ㅠ.ㅠ 혹시 방법 아시는 분 가르켜주심
감사하겠습니다.
Forums:


저것만 보시면
x의 값을 스스로 계속 갱신해주시는데요? 결국은 마지막 element의 value가 x에 들어가고 끝났네요
x의 변수도 j를 이용하여 배열로 하나씩 집어넣으셔야 할 것 같습니다..
closure에 대해 찾아보세요.
x가 function() 바깥에서 선언되어서 그렇습니다.
i[j].onmouseover = function(v) { return function() { alert(v); } }(x);
와 같이 하면 될 거 같네요.
댓글 달기