Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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_Filemaker - Fatal编程技术网

Javascript 机具按住按钮

Javascript 机具按住按钮,javascript,filemaker,Javascript,Filemaker,感谢您之前(由主持人删除)的解释和简单的实现,但它不适合我。“holdit”函数可以工作,但不稳定,可能是因为“holdit”函数中也有一个“onmouseup”,即使我在HTML按钮上禁用了onmouseup,它也不是很稳定。也许使用addEventListener-onmousedown间隔函数更好,但我不知道如何以最简单的方式实现它。下面是显示按下按钮并将timeSeconds var增加1的完整函数。为安全起见,变量数在一个限制范围内。 请帮忙 HTML: <im

感谢您之前(由主持人删除)的解释和简单的实现,但它不适合我。“holdit”函数可以工作,但不稳定,可能是因为“holdit”函数中也有一个“onmouseup”,即使我在HTML按钮上禁用了onmouseup,它也不是很稳定。也许使用addEventListener-onmousedown间隔函数更好,但我不知道如何以最简单的方式实现它。下面是显示按下按钮并将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);
    }
     }; 
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。这正是我需要的。谢谢