检查鼠标按钮是不是按下按钮/图片并每隔几秒钟继续执行一个功能直到按下按钮?

Posted

技术标签:

【中文标题】检查鼠标按钮是不是按下按钮/图片并每隔几秒钟继续执行一个功能直到按下按钮?【英文标题】:Check if mouse button is down on a button/picture and keep executing a function after every few seconds till the button is pressed?检查鼠标按钮是否按下按钮/图片并每隔几秒钟继续执行一个功能直到按下按钮? 【发布时间】:2016-12-05 13:46:57 【问题描述】:

基本上我想要做的是,我试图调用一个函数并在每“n”秒后重复相同的函数,直到按下鼠标按钮(MouseDown) 在按钮/图片上,并在释放鼠标按钮 (MouseUp) 时停止调用该函数。我正在尝试使用 JavaScript 来做到这一点!

一些参考文献

https://api.jquery.com/mousedown/

How can I detect a rightmouse button event on mousedown?

javascript: Check if mouse button down?

【问题讨论】:

I am trying to call a function 是否在用户点击鼠标之后? 是的,并且每隔“n”秒重复相同的功能,直到按下按钮! 【参考方案1】:

未测试,但提供一个想法。

var state = false;

function repeatingFunction()
    if (!state)
        return;
    
    console.log("Do something");
    setTimeout(repeatingFunction, 2000);

function mymousedown(ev)
    state = true;
    repeatingFunction();

function mymouseup(ev)
    state = false;

var obj = document.getElementById("foo");
obj.addEventListener("mousedown", mymousedown);
obj.addEventListener("mouseup", mymouseup);

【讨论】:

我试过了,但是没用。检查我是否犯了任何错误:jsfiddle.net/7Lke4t8y 是的,小错误。应该是 document.getElement.. 而不是 window.【参考方案2】:

这应该适合你:

var timerId = 0;

function onmousedown(ev) 
    console.log("Do something");  //first call right after mouse down
    timerId = setInterval(function () 
        console.log("Do something");
    , 2000);

function onmouseup(ev) 
    clearInterval(timerId);


var obj = document.getElementById("foo");
obj.addEventListener("mousedown", onmousedown);
obj.addEventListener("mouseup", onmouseup);

小提琴:https://jsfiddle.net/kLnjh9zd/

【讨论】:

以上是关于检查鼠标按钮是不是按下按钮/图片并每隔几秒钟继续执行一个功能直到按下按钮?的主要内容,如果未能解决你的问题,请参考以下文章

模板不在原图上时的模板匹配结果

Android:FusedLocationProvider,每隔几秒获取一次位置

检查鼠标按钮是不是关闭?

Qt QpushButton 实现长按下功能

每隔几秒钟运行一个脚本[重复]

@Schedule 注释每隔几分钟(或几秒钟)运行一次