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);
當然,你也必須對左側做同樣的事情。
添加回答
舉報