感谢您之前(由主持人删除)的解释和简单的实现,但它对我来说不起作用。 ' holdit'功能有效,但它并不稳定可能是因为有一个“onmouseup”'在' holdit'功能也是如此,即使我在HTML按钮上禁用了onmouseup,它也不是很稳定。使用addEventListener-onmousedown-interval函数可能更好,但我再也不知道如何以最简单的方式实现它。这是显示按下按钮的完整函数,并将timeSeconds var增加1。为安全起见。数量在一个限度内。 请帮忙。
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);
}
};
答案 0 :(得分:0)
简单实施:
<form action="/search" method="GET">
<input type="search" id="searchform" name="q" />
</form>
没有holdit的实施:
var btn = document.getElementsByClassName('button')[0];
holdit(btn, function () { timeSeconds++ ; displayTime( timeSeconds );}, 1000, 2);
答案 1 :(得分:0)
holdit函数有四个变量。第一个:btn,是按钮ID。这用于确定单击鼠标时执行的操作。
第二个变量是对函数的引用。它被称为回调函数,因为无论何时调用holdit,你都会传递一个函数。
最后两个变量只是确定延迟执行重复的时间和时间,以及每次重复的加速程度。
var repeat = function () {
action();
t = setTimeout(repeat, start);
start = start / speedup;
}
Repeat是一个递归函数,将在'start'毫秒后调用,并在每次迭代后更频繁地重复。