Javascript 按住按钮->;重复功能
我正在努力实现一些本来不难做到的事情,但迄今为止我所做的一切都没有成功 我有一个函数,每次单击按钮时都会更改一个值,我想要的是:当我按住这个按钮时,值应该会不断更改 这是我尝试过但没有成功的方法,setInterval和setTimeout不会“等待”(函数get被立即调用数千次,网站崩溃):Javascript 按住按钮->;重复功能,javascript,settimeout,setinterval,Javascript,Settimeout,Setinterval,我正在努力实现一些本来不难做到的事情,但迄今为止我所做的一切都没有成功 我有一个函数,每次单击按钮时都会更改一个值,我想要的是:当我按住这个按钮时,值应该会不断更改 这是我尝试过但没有成功的方法,setInterval和setTimeout不会“等待”(函数get被立即调用数千次,网站崩溃): 任何帮助都将不胜感激。谢谢 您的代码是一堆乱七八糟的错误(一个分号放错了位置,两个括号丢失了等等)。在任何现代浏览器上,JS都会阻止事件绑定——你是在IE上测试的吗 如果您是,以下是更正的版本:。我还修复
任何帮助都将不胜感激。谢谢 您的代码是一堆乱七八糟的错误(一个分号放错了位置,两个括号丢失了等等)。在任何现代浏览器上,JS都会阻止事件绑定——你是在IE上测试的吗 如果您是,以下是更正的版本:。我还修复了
setTimeout
调用中的一个小范围问题(this
在setTimeout闭包调用中为null)
守则:
// stub the calls
function distribucionPorcentual(arg) {
}
function distribution(arg) {
console.log(arg);
}
$(document).ready(function(){
$('.buttonPlus').mousedown(function() {
console.log("Test");
distribucionPorcentual($(this));
var t = $(this);
timeoutID =setTimeout(function() {distribution(t); },1000);
}).bind('mouseup mouseleave', function() {
console.log("Mouseup");
clearTimeout(timeoutID);
});
});
您可能希望将mouseup/mouseleave绑定到setTimeout中,以避免处理全局变量。您在此处发布的代码在语法上无效,
1000;中的分号)
是非法的,并且您的备选代码示例的括号不匹配。您能否创建一个可验证地再现您的问题的示例,并直接复制到此处?糟糕,我尝试翻译代码,但有点混乱。@Waclock:您想每秒调用一次吗?如果是这样,请将所有setTimeout
更改为setInterval
并将clearTimeout
更改为clearTimeout
。谢谢!我可以发誓我昨晚试过了,但没用。现在它做到了!再次感谢
// stub the calls
function distribucionPorcentual(arg) {
}
function distribution(arg) {
console.log(arg);
}
$(document).ready(function(){
$('.buttonPlus').mousedown(function() {
console.log("Test");
distribucionPorcentual($(this));
var t = $(this);
timeoutID =setTimeout(function() {distribution(t); },1000);
}).bind('mouseup mouseleave', function() {
console.log("Mouseup");
clearTimeout(timeoutID);
});
});