0

最初の増分は 10 です。当然のことですが、2 回目の反復では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 に答える