大神帮看看js代码 clearInterval为什么不管用

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><script>v... <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script> var val=0; var timeSpan; function getTime() { timeSpan = document.getElementById("timeSpan"); // time = document.getElementById("time"); var date = new Date(); timeSpan.innerHTML = date; } function showTime(){ val=setInterval(getTime,1000); } function stop() { clearInterval(val); timeSpan.innerHTML = ""; } </script></head><body><a href="#" onmousemove="showTime()" onmouseout="stop()" >查看当前系统时间:</a><span id="timeSpan"></span></body></html> 展开
 我来答
凯南物流
2016-07-17 · 超过51用户采纳过TA的回答
知道小有建树答主
回答量:64
采纳率:0%
帮助的人:46.5万
展开全部

原因:

    onmousemove:只要移动就会触发,导致showTime多次执行,设定多个定时器,只有最后一个的Id被存在变量val中,其他的Id被覆盖了,但仍会执行,执行clear时只清除了最后设的那个定时器而已。

解决办法:

showTime里面要保证每次设置时之前的已经设过的定时器被清除掉:

function showTime(){
    clearInterval(val);
    val=setInterval(getTime,1000);
}

然后,按你的逻辑,你需要的其实是onmousein:进入元素内时才触发一次,避免多次触发事件

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式