Javascript 机具按住按钮
感谢您之前(由主持人删除)的解释和简单的实现,但它不适合我。“holdit”函数可以工作,但不稳定,可能是因为“holdit”函数中也有一个“onmouseup”,即使我在HTML按钮上禁用了onmouseup,它也不是很稳定。也许使用addEventListener-onmousedown间隔函数更好,但我不知道如何以最简单的方式实现它。下面是显示按下按钮并将timeSeconds var增加1的完整函数。为安全起见,变量数在一个限制范围内。 请帮忙Javascript 机具按住按钮,javascript,filemaker,Javascript,Filemaker,感谢您之前(由主持人删除)的解释和简单的实现,但它不适合我。“holdit”函数可以工作,但不稳定,可能是因为“holdit”函数中也有一个“onmouseup”,即使我在HTML按钮上禁用了onmouseup,它也不是很稳定。也许使用addEventListener-onmousedown间隔函数更好,但我不知道如何以最简单的方式实现它。下面是显示按下按钮并将timeSeconds var增加1的完整函数。为安全起见,变量数在一个限制范围内。 请帮忙 HTML: <im
HTML:
<img id="but4" class="button" src= "//:0" onmousedown="timesecPlus();"onmouseup="timesecPlsUp();"/>
JAVASCRIPT:
function timesecPlus() {
var pmknop = document.getElementById('but5');
pmknop.src = secminBtndwn; //inline Base64 data: button image down (pressed)
timeSeconds = ((timeSeconds>wedstrijdperiode.seconden-6)?(timeSeconds):(++timeSeconds)); //You can ++ chase-back the timeseconds until 5 sec's from period start-time
displayTime( timeSeconds );
};
function timesecPlsUp() {
var pmknop = document.getElementById('but5');
pmknop.src = secminBtn; //inline Base64 data: button image up (normal)
};
// Things I tried:
//holdit(pmknop, function () { ++timeSeconds ; displayTime( timeSeconds );}, 2000, 2);
//pmknop = pmknop.addEventListener('mousedown', function() { interval = setInterval(timesecPlus (), 2000); });
function holdit(btn, action, start, speedup) {
var t;
var repeat = function () {
action();
t = setTimeout(repeat, start);
start = start / speedup;
}
btn.onmousedown = function() {
repeat();
}
btn.onmouseup = function () {
clearTimeout(t);
}
};
HTML:
JAVASCRIPT:
函数timesecPlus(){
var pmknop=document.getElementById('but5');
pmknop.src=secminBtndwn;//内联Base64数据:按钮图像向下(按下)
timeSeconds=((timeSeconds>wedstrijdperiode.seconden-6)?(timeSeconds):(++timeSeconds));//您可以从时段开始时间++追溯到5秒
显示时间(时间秒);
};
函数timesecPlsUp(){
var pmknop=document.getElementById('but5');
pmknop.src=secminBtn;//内联Base64数据:按钮图像向上(正常)
};
//我尝试过的事情:
//holdit(pmknop,函数(){++timeSeconds;displayTime(timeSeconds);},2000,2);
//pmknop=pmknop.addEventListener('mousedown',function(){interval=setInterval(timesecPlus(),2000);});
功能保持(btn、动作、启动、加速){
变量t;
var repeat=函数(){
动作();
t=设置超时(重复、启动);
启动=启动/加速;
}
btn.onmousedown=函数(){
重复();
}
btn.onmouseup=函数(){
清除超时(t);
}
};
简单实现:
var btn = document.getElementsByClassName('button')[0];
holdit(btn, function () { timeSeconds++ ; displayTime( timeSeconds );}, 1000, 2);
无保留的实施:
var btn = document.getElementsByClassName('button')[0];
var couterFunc, couter=0;
btn.addEventListener('mousedown',function(){couterFunc = setInterval(update,1000); update()})
btn.addEventListener('mouseup',function(){clearInterval(couterFunc)})
/* function that will fire when button press*/
function update(){console.log(++couter)};
holdit函数包含四个变量。第一个:btn是按钮id。它用于确定每次单击鼠标时执行的操作 第二个变量是对函数的引用。它被称为回调函数,因为无论何时调用holdit,都会传递一个被调用的函数 最后两个变量简单地确定了重复执行的延迟时间和时间,以及每次重复的加速程度
var repeat = function () {
action();
t = setTimeout(repeat, start);
start = start / speedup;
}
Repeat是一个递归函数,将在“开始”毫秒数后调用,并在每次迭代后更频繁地重复。btn是要单击的按钮或其他html元素示例:
document.getElementById('myButton')代码>操作是按下按钮时重复的功能。例如:function(){console.log('my button is clicked')}
。启动和加速我在mousedown
上设置超时,在mouseup
上清除超时。我尝试了上述答案和简单的实现,但“holdit”功能不是很稳定。也许最好选择“延时重复按钮”。上有一个漂亮的解决方案,但它在JQuery中,我不能使用它。希望有一个简单的Javascript。我还将代码编辑为完整代码。现在添加了不带holdit函数的解决方案;)也尝试过这个(没有holdit功能),但是当我按住按钮时,什么也没有发生。当我反复单击时,它会采取很大的步骤来减少timeSecond变量。是否可以将Ed Silverton的“带延迟的重复按钮”从JQuery转换为纯Javascript。这正是我需要的。谢谢