Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS模拟按钮使用鼠标悬停点击x秒_Javascript_Jquery - Fatal编程技术网

Javascript JS模拟按钮使用鼠标悬停点击x秒

Javascript JS模拟按钮使用鼠标悬停点击x秒,javascript,jquery,Javascript,Jquery,嗨,我正在尝试用鼠标悬停来模拟js中的按钮点击。。例如,我在html中有一个计算器组件(div中的一组按钮)。我试图做到的是,当用户将鼠标指针移到按钮上并停留至少3秒时,按钮将被“点击”,如果停留在那里,则会有另一个延迟(不一定是3秒,可能是2秒或1秒),并再次被“点击” 我已经用click和keypress事件处理程序完成了计算器组件,但仍然没有鼠标悬停输入处理程序 不过,我所做的是: Calculator.mouseoverListener = function(e, calculato

嗨,我正在尝试用鼠标悬停来模拟js中的按钮点击。。例如,我在html中有一个计算器组件(div中的一组按钮)。我试图做到的是,当用户将鼠标指针移到按钮上并停留至少3秒时,按钮将被“点击”,如果停留在那里,则会有另一个延迟(不一定是3秒,可能是2秒或1秒),并再次被“点击”

我已经用click和keypress事件处理程序完成了计算器组件,但仍然没有鼠标悬停输入处理程序

不过,我所做的是:

  Calculator.mouseoverListener = function(e, calculatorObject){
     setTimeout(function(){
        value = $(e.target).val();
        calculatorObject.handleInput(value); 
     } , 2000); 
  }
但这就像: (1) 鼠标在按钮(2)上移动,无论它在按钮上停留多长时间,它都将等待2秒并模拟“单击”


我可以使用的方法有什么提示吗

我会采取将事件侦听器绑定到每个按钮的方法,如下所示(抱歉,未测试,因此可能有错误):


您可以使用
setInterval
而不是
setTimeout
来解决问题。。这两个函数非常相似,但是
setInterval
每隔X毫秒重复执行一个操作

setInterval
的返回值很重要,因为它允许您稍后使用
clearInterval
停止执行函数

var hoverInterval = false;

Calculator.mouseoverListener = function(e, calculatorObject){
   if(hoverInterval) {
       // interval already active
       return true;
   }

   hoverInterval = setInterval(function(){
      value = $(e.target).val();
      calculatorObject.handleInput(value); 
   } , 2000); 
}
根据您的代码,您需要为元素鼠标出事件添加一个侦听器,当该事件发生时,您可以清除之前的任何
hoverInterval

假设你的计算器按钮有一个“calculatorButton”类,你的代码可能是这样的

$('.calculatorButton').mouseout(function() {
    if(hoverInterval) {
       clearInterval(hoverInterval);
    }
});

我尝试应用这个解决方案,但显然mouseout事件中的hoverInterval总是返回一个未定义的值。我尝试调用clearInterval而不使用“if”部分,但setInterval仍然有效
$('.calculatorButton').mouseout(function() {
    if(hoverInterval) {
       clearInterval(hoverInterval);
    }
});