2011-11-29 2 views
8

id가 "button"인 div가 있습니다. (CSS 호버 선택기를 사용하지 않고) 마우스를 가져 가면 배경이 파란색이되도록 변경하려고합니다.Javascript addEventListener - 마우스 오버 효과를 만드는 데 사용 하시겠습니까?

var item = document.getElementById("button"); 
item.addEventListener("mouseover", func, false); 

function func() 
{ 
    var item = document.getElementById("button"); 
    item.setAttribute("style", "background-color:blue;") 
} 

그러나 이것은 단지 내가 마우스를 가져 가면 파란색으로 항목의 색상을 설정,하지만 멀리 마우스를 이동 한 후 흰색으로 재설정하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까? (btw, mouseenter 및 mouseleave는 이것과 함께 작동하지 않습니다.)

답변

13

mouseout을 처리하려면 비슷한 이벤트를 설정해야합니다. mouseout 이벤트 함수 내에서 색상을 원래 색상으로 되돌릴 수 있습니다.

var item = document.getElementById("button"); 
item.addEventListener("mouseover", func, false); 
item.addEventListener("mouseout", func1, false); 

function func() 
{ // not needed since item is already global, 
    // I am assuming this is here just because it's sample code? 
    // var item = document.getElementById("button"); 
    item.setAttribute("style", "background-color:blue;") 
} 

function func1() 
{ 
    item.setAttribute("style", "background-color:green;") 
} 
+0

아 ... 대단한! 내 div 안에 이미지가 있고 "out"으로 간주하여 상자 안의 어떤 방법으로도 상자 안에 있다고 생각합니까? – antonpug

+0

예, mouseover 및 mouseout 이벤트는 자식의 모든 이벤트를 catch합니다. 함수에서 이벤트 매개 변수의 relatedTarget (W3C) 또는 toTarget/fromTarget (IE) 속성을 비교해야합니다. 자세한 정보는 다음 링크를 참조하십시오. http://www.quirksmode.org/js/events_mouse.html#relatedtarget – AndrewR

+0

상위 컨테이너 만 캡처하고 하위 요소는 처리하지 않는 것이 좋습니다. 특별한 이유가없는 한, jQuery의'hover()'함수를 사용하여 코드를 단순화 할 수있다. – AndrewR

1

mouseout을 사용해 보셨습니까?

(불행히도 "mouseover"라는 이벤트의 이름이 잘못 지정되었습니다. "mouseinin"이라는 이벤트가 더 분명하고 직관적으로 "mouseout"과 반대되는 경우 더 좋았을 것입니다. 일관성없는 이벤트 일들.)

나는 mouseenter와 mouseleave가 다른 브라우저가 지원하지 않는 IE의 것들이라고 생각한다. jQuery가 이러한 이벤트도 지원한다고 생각하지만.

+0

mouseout works ...하지만 mousein과 같은 것이 있습니까? mousein이 작동하지 않습니다. – antonpug

+0

아니요, 아니요, "mousein"이 없습니다. 두 이벤트는 확실히 "mouseover"및 "mouseout"입니다. 내가 말한 의미는 기존의 "mouseover"이벤트가 "mouseinin"이라고 불려서 "mouseout"과는 반대쪽에 있어야한다는 것입니다. 하지만 그렇지 않았습니다. 나는 조금 더 명확하게하려고 나의 대답을 편집했다. – nnnnnn

관련 문제