javascript - 如何在 mouseleave 时停止由 mouseenter 触发的 setInterval?
问题描述
我已经设法让箭头滚动一个div的溢出mouseenter
来工作。问题是脚本不仅不会停止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
。
解决方案
您只需要创建一个将存储 setInterval() 值的全局计时器变量,以便您可以使用它来停止 setInterval 运行。
var timer = undefined;
function scroll_right() {
var elmnt = document.getElementsByClassName("thumbnails")[0];
elmnt.scrollLeft += 50;
timer && clearInterval(timer);
timer = setInterval(scroll_right, 300);
}
function kill() {
timer && clearInterval(timer)
}
--------- 这是html代码
<img class="arrow"
onmouseenter="scroll_right()"
onmouseleave="kill()"
src="https://image.flaticon.com/icons/svg/126/126490.svg">
推荐阅读
- c++ - 自定义打开文件对话框 C++
- python - 如何使用 FeatureUnion 在同一分类任务中使用 2 个 TfidfVectorizer
- flutter - 使用来自 Provider 的异步数据更新颤振画布
- python - XRPL - 错误 - 发行带有转账费的 Fungible Token
- javascript - 展平嵌套对象打字稿
- continuous-integration - 如何使竹子任务相互依赖,如果一个出错,下一个不执行
- java - 如何在 Eclipse Milo 中获取 OPC UA 节点名称?
- xcode - 在 Xcode 中横向滚动按钮类型图像
- google-cloud-platform - 相同的 IP 地址可以为负载均衡器转发规则提供 TCP/UDP 流量吗?
- nginx - 使用 ffmpeg 在文件夹中流式传输视频