繁体   English   中英

使用addEventListener javascript添加后,removeEventListener()不会删除函数

[英]removeEventListener() not removing function after added with addEventListener javascript

我使用addEventListener()添加了一个mouseover函数,并尝试使用removeEventListener()mouseout上将其删除。 添加功能可以正常工作,但不会在mouseout上删除。

这里的代码有什么问题? 如何修改以删除该功能?

    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);

我猜想重点是删除红色,而不是真正删除eventListener

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);

小提琴

如果我正确理解,我认为您想在“ mouseover”事件下方添加一个“ mouseout”事件,然后在“ mouseout”的回调函数中都将其删除。

也就是说,更像这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM