我有一个带有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')">
答案 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);