函数参数中的逻辑错误

Logical error in function parameter?

本文关键字:错误 参数 函数      更新时间:2023-09-26

第一次增量是10,就像它应该的那样,第二次迭代返回未定义。我认为它与设置超时有关?

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;
});

您不会将值传递给后续调用。 试试这个...

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 中添加了一个函数,以便您可以将值传入。

另外,我修复了清除超时。 您正在将函数名称传递到其中,它需要一个引用计时器的 ID。