第一次增量是10,就像它应该的那样,第二次迭代返回 undefined 。我假设它与 setTimeout 有关?
var time = 200;
功能:
function repeatingfunction(increment) {
if (time>5){
time=time-39
};
if (mausunten == true){
//alert(increment);
setTimeout(repeatingfunction, time);
$("#slider-vertical").slider("value", ($("#slider-vertical").slider("value"))+increment);
refreshCalculation();
};
if (mausunten == false){
clearTimeout(repeatingfunction);
};
}
调用并停止该功能:
$("#plus1").mousedown(function(){
mausunten = true;
repeatingfunction(10);
});
$(document).mouseup(function() {
mausunten = false;
time = 200;
});
答案 0 :(得分:2)
您没有将值传递给后续调用。试试这个......
var timeoutID;
function repeatingfunction(increment) {
if (time>5){
time=time-39
};
if (mausunten == true){
//alert(increment);
timeoutID = setTimeout(function() {
repeatingfunction(increment);
}, time);
$("#slider-vertical").slider("value", ($("#slider-vertical").slider("value"))+increment);
refreshCalculation();
};
if (mausunten == false){
clearTimeout(timeoutID);
};
}
我在setTimeout中添加了一个函数,以便您可以传入值。
另外,我修复了clearTimeout。您正在将函数名称传递给它,并且它需要一个引用计时器的ID。