javascript - onmousemove javascript 的奇怪之处

标签 javascript html css mouse onmousemove

enter image description here大家好:)如果我在示例中使用鼠标指针传递 div,函数在控制台中打印两次,这意味着 onmousemove 事件被触发两次。我还打印了鼠标指针的坐标以及您如何在下图,我也没有垂直移动,只是水平移动。考虑到 div 是 1 像素宽度,onmousemove 事件怎么可能被触发?考虑到 div 是 1 像素宽度,onmousemove 事件怎么可能被触发两次?

  <div id="div1">

</div>

#div1{
  height:200px;
  width:1px;
  background:red;

}


document.getElementById("div1").onmousemove= function(){

              console.log("in mousemove function");
              console.log(event.clientX);
              console.log(event.clientY);

             };

最佳答案

您绑定(bind) onmousemove ,每次鼠标移到元素上时都会调用它。当您将鼠标悬停在 div 上时,您有时会向下移动鼠标以解决对处理程序的额外调用。

如果给div增加更多的宽度,会更清晰。

你真正想要的是 onmouseenter 当你进入 div 时它会被调用一次:

document.getElementById('div1').addEventListener('mouseenter', function() {
  console.log('mouse entered div');
});

关于javascript - onmousemove javascript 的奇怪之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37498421/

相关文章:

javascript - Bootstrap 模式不会出现

javascript - 使用 rowspan 对分层数据进行分组

javascript - 为什么我不能让汉堡菜单正常工作?

css - 有没有一种工具可以将多个 SVG 合并为一个并将它们用作 CSS Sprites?

css - 背景大小属性弄乱了我的标题

javascript - 如何从选项 select - json 对象中获取特定值

javascript - Bootstrap <UL> 列表——在大量列表项上添加事件处理程序

html - 折叠两个 float div 之间的边界?

jquery - 电子邮件验证空白不需要输入

html - Bootstrap 3 站点上的 XS-6 列在移动设备上保持堆叠