【发布时间】:2018-11-03 14:25:36
【问题描述】:
我已经设法让箭头在mouseenter 上滚动div 的溢出来工作。问题是脚本不仅不会在mouseleave 上停止,而且会阻止手动滚动对面的 div。
JS
function scroll_right() {
var elmnt = document.getElementsByClassName("thumbnails")[0];
elmnt.scrollLeft += 50;
var timer = setInterval(scroll_right, 300);
}
function kill() {
clearInterval(timer)
}
还有箭头
<img class="arrow"
onmouseenter="scroll_right()"
onmouseleave="kill()"
src="https://image.flaticon.com/icons/svg/126/126490.svg">
我的想法是scroll_right 函数在mouseenter 上被触发,而其中的timer 在mouseleave 上被停用。
【问题讨论】:
-
您的代码几乎是正确的,除了以下几点:您在
scroll_right中定义了timer,因此您无法在kill中访问它。因此,将var timer;放在两个函数之外,然后在scroll_right中将var timer = ...替换为timer = ...。 -
@alx 注意到
scroll_right函数在一段时间后设置了无限多个计时器。请参阅我的答案以获得解决方案 -
@AnsonYeung 哎呀,你说得对,这是
timer变量范围无效之后的下一个大问题。
标签: javascript scroll setinterval mouseover mouseenter