2 回答
TA贡献1856条经验 获得超5个赞
一种解决方案是使用setInterval()应该在 上取消的方法mouseout。您可以存储间隔 id 并clearInterval()使用mouseout:
const delay = 100;
let intervalId;
function goLeft() {
intervalId = setInterval(
() => (document.getElementById('images').scrollLeft -= 20),
delay,
);
}
function goRight() {
intervalId = setInterval(
() => (document.getElementById('images').scrollLeft += 20),
delay,
);
}
function stopScrolling() {
clearInterval(intervalId);
}
left.addEventListener('mouseover', goLeft);
left.addEventListener('mouseout', stopScrolling);
right.addEventListener('mouseover', goRight);
right.addEventListener('mouseout', stopScrolling);
TA贡献1909条经验 获得超7个赞
您可以创建一个布尔值,当用户将鼠标悬停在元素上时,该布尔值将为“true”。
// for the right side:
let mouseOverRight = false;
right.addEventListener("mouseenter", function(){
mouseOverRight = true;
});
right.addEventListener("mouseleave", function(){
mouseOverRight = false;
});
然后使用间隔,将延迟更改为您想要的任何速度
window.setInterval(function(){
if (mouseOverRight)
/// Scroll logic here
}, 300);
当然,你也必须对左侧做同样的事情。
添加回答
举报