0

第一次增量是 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;
});
4

1 回答 1

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。

于 2013-09-17T11:32:51.513 回答