在按住鼠标的同时循环

时间:2013-09-17 09:17:27

标签: javascript jquery

http://jsfiddle.net/U9v2H/2/

我希望在按住鼠标的同时每100毫秒增加数字。 我做错了什么?

var i = 1;
$("#plus1").mousedown(function () {
    loopthis = setinterval(repeatingfunction(), 100);
}).mouseup(function () {
    clearInterval(loopthis);
});

function repeatingfunction() {
    $("#testarea").append(i);
    i = i + 1;
}

6 个答案:

答案 0 :(得分:3)

您正在调用该函数而不是在调用setInterval时为其分配引用(您也错过了大写字母I)。这样:

loopthis = setinterval(repeatingfunction(), 100);

应该是:

loopthis = setInterval(repeatingfunction, 100);

在原始代码中,它立即执行repeatingfunction(因为那是()所做的),然后传递该函数返回的值(无)执行时间隔时间到了。

答案 1 :(得分:2)

拼写为setInterval,您还在setInterval运行之前调用重复功能。我不认为你想要添加一个新的textnode,而是用旧的替换旧值:

var i = 1, loopthis;
$("#plus1").mousedown(function () {
    loopthis = setInterval(repeatingfunction, 100);
}).mouseup(function () {
    clearInterval(loopthis);
});

function repeatingfunction() {
    $("#testarea").text(i);
    i = i + 1;
}

Example

答案 2 :(得分:2)

大的我在setInterval和重复功能之后不应该有()

loopthis = setInterval(repeatingfunction, 100); //notice setInterval and repeatingfunction()

DEMO

答案 3 :(得分:2)

Live Demo

var i = 1;
$("#plus1").mousedown(function () {
    loopthis = setInterval(repeatingfunction, 100);
}).mouseup(function () {
    clearInterval(loopthis);
});

function repeatingfunction() {
    $("#testarea").append(i);
    i = i + 1;
}

答案 4 :(得分:1)

loopthis的范围必须是全局的,因为它在mouseup事件处理程序中未定义。 setinterval需要更改为setInterval并传递匿名函数。另外,不要附加i的值,而是更改html的{​​{1}}。

<强>的Javascript

div

JS小提琴: http://jsfiddle.net/U9v2H/16/

答案 5 :(得分:1)

您的javascript代码存在两个问题。

1)setinterval shouold是setInterval

2)loopthis = setInterval(repeatingfunction(), 100);应为loopthis = setInterval(repeatingfunction, 100);

请注意,()中的repeatingfunction()不是必需的。

以下是jsfiddle