功能参数中的逻辑错误?

时间:2013-09-17 11:29:44

标签: javascript jquery

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

1 个答案:

答案 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。