2014-01-09 43 views
0

我已經添加了mouseover函數和addEventListener(),並且我試圖在mouseoutremoveEventListener()上刪除它。添加該功能可以正常工作,但不會在mouseout上被刪除。removeEventListener()在添加了addEventListener後沒有刪除函數javascript

這裏的代碼有什麼問題?如何修改以刪除該功能?

var elem = document.getElementById('a'); 

function highLight() { 

var p = document.getElementById('p'); 
var strong = p.getElementsByTagName('strong'); 
for(var i = 0; i < strong.length; i++) { 
    strong[i].style.color = 'red'; 
} 

} 
elem.addEventListener('mouseover', highLight, false); 

elem.removeEventListener('mouseout', highLight, false); 
+0

你知道什麼是'removeEventListener'呢,和你確定這是你在找什麼,因爲你要刪除的偵聽器相同的事件,而不是其他事件? – adeneo

+0

哦,如果你想消除這種顏色,你就走了! – adeneo

回答

0

我猜的一點是要去除紅色,並沒有真正刪除事件監聽

var elem = document.getElementById('a'); 

function highLight() { 
    var p = document.getElementById('p'); 
    var strong = p.getElementsByTagName('strong'); 
    for (var i = 0; i < strong.length; i++) { 
     strong[i].style.color = 'red'; 
    } 
} 

function unhighLight() { 
    var p = document.getElementById('p'); 
    var strong = p.getElementsByTagName('strong'); 
    for (var i = 0; i < strong.length; i++) { 
     strong[i].style.color = 'black'; 
    } 
} 


elem.addEventListener('mouseenter', highLight, false); 

elem.addEventListener('mouseleave', unhighLight, false); 

FIDDLE

+0

嗯,是的,我正在使用removeEventListener()不正確。 – moonshineOutlaw

+0

@moonshineOutlaw - 那是刪除紅色的意思嗎?顧名思義,removeEventListener將刪除事件偵聽器,以便事件不再被綁定。 – adeneo

0

如果我理解正確,我想你想添加'mouseout'事件在'mouseover'事件下面,然後在回調函數中刪除'mouseout'。

也就是說,更多的東西是這樣的:

elem.addEventListener('mouseover', highLight, false); 
elem.addEventListener('mouseout', function() { 
    elem.removeEventListener('mouseover'); 
    elem.removeEventListener('mouseout'); 
}, false); 
相關問題