如何设置此删除事件侦听器的参数?



我正要制作一些旋转程序(通过鼠标点击&拖拽),但'removeEventListener'不起作用。你能告诉我怎么用吗?为什么不能用?

这是我在这里的第一个问题,所以如果你对这个问题有任何疑问,我很乐意接受。

<body>
<div class="wrap">
<div class="target">target</div>
</div>
</body>
const html = document.querySelector("html");
const info = document.querySelector(".info");
const target = document.querySelector(".target");
const wrap = document.querySelector(".wrap");
let center = {
x: target.getBoundingClientRect().left + target.clientWidth / 2,
y: target.getBoundingClientRect().top + target.clientHeight / 2,
};
window.addEventListener("resize", () => {
center = {
x: target.getBoundingClientRect().left + target.clientWidth / 2,
y: target.getBoundingClientRect().top + target.clientHeight / 2,
};
});
const rotate = function () {
target.addEventListener("mousemove", (e) => {
const x = center.x - e.clientX;
const y = center.y - e.clientY;
const radian = Math.atan2(y, x);
const degree = ((radian * 180) / Math.PI).toFixed(0);
target.style.transform = "rotate(" + degree + "deg)";
});
};
target.addEventListener("mousedown", rotate, true);
target.addEventListener("mouseup", () => {
target.removeEventListener("mousedown", rotate, false);
});

我试过改变这部分。目标→将removeEventListener的参数包装为另一个。但这些都不起作用

target.addEventListener("mouseup", () => {
target.removeEventListener("mousedown", rotate, false);
});

捕获/使用捕获参数必须匹配以删除侦听器。由于您对mousedowneven侦听器使用了true,因此您还必须使用true来删除事件侦听器:

target.addEventListener("mouseup", () => {
target.removeEventListener("mousedown", rotate, true);
});

查看文档获取更多详细信息:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener#matching_event_listeners_for_removal

最新更新