【发布时间】:2018-01-30 01:47:03
【问题描述】:
我要做的就是将显示在框中的数字加 1,并让它每 100 毫秒执行一次,只要鼠标按下。该函数会执行,但无论鼠标按住多长时间,都不会超过一次。每次在该元素上发生 mousedown 事件时,它只会将变量增加 1,我可以在框中看到这一点,而我希望看到只要鼠标保持按下状态,数字就会迅速增加。是否有任何用于 mouseup 事件的代码可以阻止此 mousedown 事件继续执行 setTimeout 中的函数,或者我是否缺少某种规则?很奇怪。
var mouseDownCount = 0;
$("#addButton").mousedown(function () { startMouseCount(); });
function startMouseCount() {
$("mouseCount").html(mousedownCount)
mdcTimer = window.setTimeout(function () {
mousedownCount++;
$("#mouseCount").html(mousedownCount);
}, 100);
return false;
}
【问题讨论】:
-
setTimeout 本质上不会重复。 setInterval 确实
-
对这项工作使用 setInterval
-
或者递归调用同一个函数。是的,你是对的,这就是我所缺少的。有人可以将其作为答案,以便我可以将其标记为已接受吗?我刚刚添加了一条线,它会调用自己并且可以正常工作。我有其他功能在其他地方停止它,所以它不需要自行停止。
-
或者只是删除您的问题,因为它是重复的。
标签: javascript jquery