Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.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 按住按钮->;重复功能_Javascript_Settimeout_Setinterval - Fatal编程技术网

Javascript 按住按钮->;重复功能

Javascript 按住按钮->;重复功能,javascript,settimeout,setinterval,Javascript,Settimeout,Setinterval,我正在努力实现一些本来不难做到的事情,但迄今为止我所做的一切都没有成功 我有一个函数,每次单击按钮时都会更改一个值,我想要的是:当我按住这个按钮时,值应该会不断更改 这是我尝试过但没有成功的方法,setInterval和setTimeout不会“等待”(函数get被立即调用数千次,网站崩溃): 任何帮助都将不胜感激。谢谢 您的代码是一堆乱七八糟的错误(一个分号放错了位置,两个括号丢失了等等)。在任何现代浏览器上,JS都会阻止事件绑定——你是在IE上测试的吗 如果您是,以下是更正的版本:。我还修复

我正在努力实现一些本来不难做到的事情,但迄今为止我所做的一切都没有成功

我有一个函数,每次单击按钮时都会更改一个值,我想要的是:当我按住这个按钮时,值应该会不断更改

这是我尝试过但没有成功的方法,setInterval和setTimeout不会“等待”(函数get被立即调用数千次,网站崩溃):


任何帮助都将不胜感激。谢谢

您的代码是一堆乱七八糟的错误(一个分号放错了位置,两个括号丢失了等等)。在任何现代浏览器上,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);
    });
 });