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