Javascript onClick定时事件?

Javascript onClick定时事件?,javascript,button,onclick,Javascript,Button,Onclick,我有个问题! 是否可以执行定时点击事件? 我正在使用RPi和python编写一个电机控制程序。我需要按钮来控制马达的速度。目前,按钮仅在按下时设置固定速度,在释放时设置0速度。是否可以这样做,在按住另一个功能1秒后,按下按钮执行一个功能,在按住另一个功能1秒后执行另一个功能 这是我目前的整个页面代码(忽略注释) //声明全局变量: _运行=错误; _loader=document.createElement('div'); _urlForward=“/pirmyn”; _urlStop=

我有个问题! 是否可以执行定时点击事件? 我正在使用RPi和python编写一个电机控制程序。我需要按钮来控制马达的速度。目前,按钮仅在按下时设置固定速度,在释放时设置0速度。是否可以这样做,在按住另一个功能1秒后,按下按钮执行一个功能,在按住另一个功能1秒后执行另一个功能

这是我目前的整个页面代码(忽略注释)


//声明全局变量:
_运行=错误;
_loader=document.createElement('div');
_urlForward=“/pirmyn”;
_urlStop=“/stoti”;
_urlLeft=“/kaire”;
_urlRight=“/desine”;
_urlBack=“/atgal”;
_urlFoto=“/foto”;
//局部变量,它只能在这个标记中使用,而不能在外部使用。。。前方
// ->
//_running=false;

您需要做的是从脚本中设置处理程序,而不是在html中, 并检查时间与鼠标按下/鼠标按下等的关系。 比如说

var sec = 1000;  //1 second in millisecs
var time;  //global for time checks

$(function() {  //set handlers after document loads
  var btn = $('#bBack');  //ex. button

  btn.mousedown(function(){
     immediateFunction(); //execute the 1st function
     time = (new Date()).getTime();
     btn.on('mouseup', foo);
     setTimeout(removeListener, sec); //remove listener after 1 second
  });

  function foo(){
       var timeNow = (new Date()).getTime();
       if(timeNow-time > sec){
         //now i know he released the button in more than 1 second, do X
       }else{
         //now i know he released the button in less than 1 second, do Y
       }
   }

   function removeListener(){
     btn.off('mouseup', foo); //remove listener
   }

   function immediateFunction(){
     console.log('whatever');
   }
});

你也可以通过承诺做到这一点,但对于js新手来说,这将更加复杂,从你使用的html侦听器和全局函数来看:)祝你好运,你需要做的是从脚本中设置处理程序,而不是用html, 并检查时间与鼠标按下/鼠标按下等的关系。 比如说

var sec = 1000;  //1 second in millisecs
var time;  //global for time checks

$(function() {  //set handlers after document loads
  var btn = $('#bBack');  //ex. button

  btn.mousedown(function(){
     immediateFunction(); //execute the 1st function
     time = (new Date()).getTime();
     btn.on('mouseup', foo);
     setTimeout(removeListener, sec); //remove listener after 1 second
  });

  function foo(){
       var timeNow = (new Date()).getTime();
       if(timeNow-time > sec){
         //now i know he released the button in more than 1 second, do X
       }else{
         //now i know he released the button in less than 1 second, do Y
       }
   }

   function removeListener(){
     btn.off('mouseup', foo); //remove listener
   }

   function immediateFunction(){
     console.log('whatever');
   }
});

你也可以通过承诺来做到这一点,但对于js新手来说,这将更加复杂,从你使用的html侦听器和全局函数来看:)祝你好运。正如您已经做的,您可以在mousedown上设置一个日期,在mouseup之前做一些事情,然后根据按钮按下的时间做更多的事情,希望下面的内容是不言自明的

使用立即调用的函数表达式(IIFE)意味着共享变量不需要是全局的,并保持紧凑

var foo=(函数(){
var时间启动;
var=0;
var计数=0;
var计数元素;
var-timerRef;
var-msgEl;
返回{
setStart:function(){
timeStart=新日期();
foo.showCount();
msgEl=document.getElementById('finalMessage');
msgEl.textContent='';
},
setEnd:函数(回调){
if(timerRef){
清除超时(timerRef);
timerRef=null;
}
document.getElementById('settingValue')。textContent=count;
//用回调做一些事情
回调();
msgEl.textContent='全部完成';
},
showCount:function(){
已用=新日期()-时间开始;
计数=经过时间/100 | 0;
document.getElementById('settingValue')。textContent=count;
timerRef=setTimeout(foo.showCount,20);
}
};
}());
设置设置为:0

设定值

是的。正如您已经做的,您可以在mousedown上设置一个日期,在mouseup之前做一些事情,然后根据按钮按下的时间做更多的事情,希望下面的内容是不言自明的

使用立即调用的函数表达式(IIFE)意味着共享变量不需要是全局的,并保持紧凑

var foo=(函数(){
var时间启动;
var=0;
var计数=0;
var计数元素;
var-timerRef;
var-msgEl;
返回{
setStart:function(){
timeStart=新日期();
foo.showCount();
msgEl=document.getElementById('finalMessage');
msgEl.textContent='';
},
setEnd:函数(回调){
if(timerRef){
清除超时(timerRef);
timerRef=null;
}
document.getElementById('settingValue')。textContent=count;
//用回调做一些事情
回调();
msgEl.textContent='全部完成';
},
showCount:function(){
已用=新日期()-时间开始;
计数=经过时间/100 | 0;
document.getElementById('settingValue')。textContent=count;
timerRef=setTimeout(foo.showCount,20);
}
};
}());
设置设置为:0

设定值
变量声明需要使用var、let或const。如果没有这些关键字,您将依赖于执行代码时的推断全局变量,并将在严格模式下获得引用错误。变量声明需要使用var、let或const。如果没有这些关键字,您将依赖于执行代码时推断出的全局变量,并将在严格模式下获得引用错误。
var sec = 1000;  //1 second in millisecs
var time;  //global for time checks

$(function() {  //set handlers after document loads
  var btn = $('#bBack');  //ex. button

  btn.mousedown(function(){
     immediateFunction(); //execute the 1st function
     time = (new Date()).getTime();
     btn.on('mouseup', foo);
     setTimeout(removeListener, sec); //remove listener after 1 second
  });

  function foo(){
       var timeNow = (new Date()).getTime();
       if(timeNow-time > sec){
         //now i know he released the button in more than 1 second, do X
       }else{
         //now i know he released the button in less than 1 second, do Y
       }
   }

   function removeListener(){
     btn.off('mouseup', foo); //remove listener
   }

   function immediateFunction(){
     console.log('whatever');
   }
});