2秒且松手后触发事件
<!DOCTYPE html> <html> <head> <script> var last = 0; var now = 0; function mouseDown() { last = new Date(); } function mouseUp() { now = new Date(); if (now - last > 2 * 1000) { document.getElementById("p1").style.color = "red"; } } </script> </head> <body> <p id="p1" onmousedown="mouseDown()" onmouseup="mouseUp()"> 请点击文本!mouseDown() 函数当鼠标按钮在段落上被按下时触发。 此函数把文本颜色设置为红色。 mouseUp() 函数在鼠标按钮被释放时触发。mouseUp() 函数把文本的颜色设置为绿色。 </p> </body> </html>通过setInterval()方法可以按周期执行代码段,并返回一个标识性的值(可以理解为周期性调用函数的过程)。调用clearInterval(返回的参数) 方法可以结束该重复性过程。
效果:只要长按时间到达1000毫秒,无论是否弹起鼠标,都会触发。反之,如果不到1000毫秒,鼠标弹起的时候会结束。
clearTimeout() 方法可取消由 setTimeout() 方法设置的 timeout。
down后指定时间内没有up,触发事件。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title></title> </head> <body> <input id="p1" type="button" onmousedown="holdDown()" onmouseup="holdUp()" value="鼠标长按"/> <script type="text/javascript"> //申明全局变量 var timeStart, timeEnd, time; //获取此刻时间 function getTimeNow() { var now = new Date(); return now.getTime(); } //鼠标按下时触发 function holdDown() { //获取鼠标按下时的时间 timeStart = getTimeNow(); //setInterval会每100毫秒执行一次,也就是每100毫秒获取一次时间 time = setInterval(function () { timeEnd = getTimeNow(); //如果此时检测到的时间与第一次获取的时间差有1000毫秒 if (timeEnd - timeStart > 1000) { //便不再继续重复此函数 (clearInterval取消周期性执行) clearInterval(time); //字体变红 document.getElementById("p1").style.color = "red"; } }, 100); } function holdUp() { //如果按下时间不到1000毫秒便弹起, clearInterval(time); } </script> </body> </html>Javascript 学习之路:鼠标长按事件