如何正确使用addEventListener?
P粉512363233
P粉512363233 2024-04-01 17:35:47
0
2
429

re2.addEventListener("mouseover", function(){
        const re21 = document.getElementById("reso");
        re21.style.position = "absolute";
        re21.style.top = "50%";
        re21.style.left = "50%";
        console.log("Exiting Listener- mouseOver");

        re3.addEventListener("mouseover", function(){
            const re22 = document.getElementById("reso");
            re22.style.position = "fixed";
            re22.style.top ="0px";
            re22.style.left="0px";
            console.log("Exiting Listener- mouseout");
    
          });

      });

我有一个 id 为“reso”的 html div 元素。 我想要做的是每当鼠标到达该元素时将该元素从 A 点移动到 B 点。我们怎样才能做到这一点?

当我们执行上面的javascript代码时。它只移动一圈。然后我们尝试使用 i=0 到 10 的循环将上面的代码与一些控制台日志一起包含在其中。所有日志都在打印。 但事件监听器仍然只执行一次。

你能帮助我们如何做到这一点吗?

P粉512363233
P粉512363233

全部回复(2)
P粉727416639

您可能需要在事件回调函数之外的外部范围内初始化一个计数器,然后在每次触发事件时递增它。

const elm = document.getElementById("reso");

let initialTopPosition = 0;
let initialLeftPosition = 0;


function moveElement() {
  initialTopPosition++;
  initialLeftPosition++;

  elm.style.top = `${initialTopPosition}%`;
  elm.style.left = `${initialLeftPosition}%`;
  console.log("Exiting Listener- mouseOver");
};

elm.addEventListener("mousemove", moveElement);
#reso {
  background-color: red;
  height: 100px;
  width: 100px;
  display: inline-block;
  position: absolute;
}
P粉605233764

您可以使用 mousemove 事件代替 mouseover 事件。这将允许您随着鼠标移动不断更新元素的位置

const re21 = document.getElementById("reso");
let isMoving = false;

re21.addEventListener("mousemove", function(event) {
  if (!isMoving) {
    isMoving = true;
    re21.style.position = "absolute";
    re21.style.top = `${event.clientY}px`;
    re21.style.left = `${event.clientX}px`;
  }
});

re21.addEventListener("mouseout", function() {
  isMoving = false;
});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板