我希望在按住鼠标的同时每100毫秒增加数字。 我做错了什么?
var i = 1;
$("#plus1").mousedown(function () {
loopthis = setinterval(repeatingfunction(), 100);
}).mouseup(function () {
clearInterval(loopthis);
});
function repeatingfunction() {
$("#testarea").append(i);
i = i + 1;
}
答案 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;
}
答案 2 :(得分:2)
大的我在setInterval和重复功能之后不应该有()
loopthis = setInterval(repeatingfunction, 100); //notice setInterval and repeatingfunction()
答案 3 :(得分:2)
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
答案 5 :(得分:1)
您的javascript代码存在两个问题。
1)setinterval
shouold是setInterval
2)loopthis = setInterval(repeatingfunction(), 100);
应为loopthis = setInterval(repeatingfunction, 100);
请注意,()
中的repeatingfunction()
不是必需的。
以下是jsfiddle