javascript onclick重复

时间:2012-02-08 12:07:21

标签: javascript onclick

我有一个带有onclick事件的表单按钮,它运行一个简单的javascript函数(将值加1)。

我每次都要点击鼠标按钮才能运行,有没有任何方法可以实现它,如果按住鼠标按钮它也会运行它,但是每半秒一次?

当前代码

<script>
  function incrementValue(id) {
    var value = parseInt(document.getElementById(id).innerHTML);
    value=++; 
    document.getElementById(id).innerHTML = value;
    }
</script>

HTML

<input type="text" id="attk">
<input type="text" id="def">

<input type="button" onclick="incrementValue('attk')">
<input type="button" onclick="incrementValue('def')">

4 个答案:

答案 0 :(得分:4)

按下按钮时,下面每500毫秒重复一次 - 并将增加一个计数器

JavaScript的:

var intervalId; // keep the ret val from setTimeout()
function mousedownfunc(divid) {
    intervalId = setInterval(runme, 500, divid);
}

function mouseupfunc() {
    clearInterval(intervalId);
}

function runme(divid) {
    document.getElementById(divid).innerHTML = parseFloat(document.getElementById(divid).innerHTML) + 1;
}

HTML:

<input type="button" onmousedown="mousedownfunc('counter')" value="clickme" onmouseup="mouseupfunc('counter')" /><br/>
<div id="counter">1</div>

带计数器的工作示例 - &gt; http://jsfiddle.net/73uKk/1/

答案 1 :(得分:1)

您可以在按钮上添加一个onmousedown事件(http://www.w3schools.com/jsref/event_onmousedown.asp) 然后使用setTimeout()函数(http://www.w3schools.com/jsref/met_win_settimeout.asp

<input type="submit" onmousedown="func1">


function func1(){  
  //yourcode;  
setTimeout(func1,500);
}

不确定setTimout中的正确语法。

答案 2 :(得分:1)

你可以在JQuery中做这样的事情:

var myInterval = null,
counter = 0;

            $('#buttonID').mousedown(function(){
                myInterval = setInterval(function(){
                    counter++;
                    // display it on page...
                },500);
            });

            $('#buttonID').mouseup(function(){
                clearInterval(myInterval)
            });

在mousedown中定义一个间隔,当鼠标单击释放时(mouseup)清除该间隔。我希望这会有所帮助

答案 3 :(得分:0)

你可以使用Javascript Closure

var i = 1;
var callMe = function ()
{
    var called = function(){ var j = i++; alert ('now its:'+j); }
    return called();   
}
setInterval(callMe,500);

see more