首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript removeEventListener不工作

Javascript removeEventListener不工作
EN

Stack Overflow用户
提问于 2021-03-30 01:30:20
回答 1查看 29关注 0票数 0

因此,对于一个网站,我有一个功能,如果你点击一张图片,它会在灯箱中显示它,然后在第二次点击时,它会跟踪鼠标的移动来移动图片。这很好,问题是在第三次单击时,我想要打开和关闭鼠标跟踪。

我发布了一个简化版本的代码,其中包含一个按钮,而不是一个图像

代码语言:javascript
复制
<body>

<div id="myDIV"></p>
  <button style="padding: 30px;" id="myBtn">Try it</button>
</div>



<p id="demo"></p>

<script>
document.addEventListener('click', buttonClick);
let scrollon =false;

function buttonClick(event) {
      var elem = event.target,
        elemID = elem.getAttribute('id'),
        myBtn = document.getElementById('myBtn');
        

         if (elemID == 'myBtn' && !scrollon){
            event.preventDefault();
            scrollon=true;
             mine();
             console.log('triggered')

         }else

         if (elemID == 'myBtn' && scrollon){
            event.preventDefault();
             scrollon=false;
             mine();
             console.log('untriggered')
         }         

}
function mine(){
    if (scrollon == false){
        myBtn.removeEventListener('mousemove',scroll);
        return;
    }
    myBtn.addEventListener('mousemove',scroll);
    
    function scroll(e){
        document.getElementById("demo").innerHTML = Math.random(); //keeps going
            //do something
    }
}

</script>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-30 03:14:20

这是一个非常好的替代代码,它工作得非常好,并且经常被使用。所以我只修改了mine()函数。

代码语言:javascript
复制
function mine() {
  if (scrollon == false) {
    myBtn.onmousemove = null;
  } else {
    myBtn.onmousemove = function (e) {
      document.getElementById("demo").innerHTML = Math.random(); //keeps going
      //do something
    };
  }
}

希望我能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66858863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档