0

while Colors(interval) が起動している間、ドロップダウンを無効にしたいと思います。私の場合、5 秒後にカットオフを手動で設定しました。私が経験しているのは、re-activator をケース ブロックに配置すると、setTimeout を待たないことです。それとも、両方の呼び出しが同時に起動しているので、setTimeout が起動している間 (つまり、5 秒間待機している間)、次の呼び出し (再アクティベーター) も起動しますか?

他の質問 - そして、私の色が発火している間にドロップダウンを非アクティブにしたかった理由 - は、色が発火している間に、ドロップダウンをもう一度クリックすると、別の呼び出しを開始することに気付いたということです。を呼び出すと、Colors が際限なく発火します (無限ループが何らかの形で作成されたと仮定します)。理由についての考えは?

 function timeToHexColor(){
    var time = new Date();
    var timestamp = time.toString("hh:mm:ss");
    document.getElementById("board").innerHTML += 
                              "#" + timestamp.split(":").join("") + "<br/>";   
}

function Colors(interval) {
    this.interval = interval;
    switch (this.interval) {
        case 'second': 
            document.getElementById('options').disabled = true;
            x = setInterval(timeToHexColor,1000);
            setTimeout(stopColors, 5000);
            //Placing the re-activtor here executes instantly not after the setTimeout.
            //document.getElementById('options').disabled = false;
            break;
        case 'minute': 
            x = setInterval(timeToHexColor,60000);
            setTimeout(stopColors, 5000);
            document.getElementById('options').disabled = true;
            break;       
        case 'hour': 
            x = setInterval(timeToHexColor,60000*60);
            setTimeout(stopColors, 5000);
            document.getElementById('options').disabled = true;
            break;
        case 'day': 
            x = setInterval(timeToHexColor,60000*1440);
            setTimeout(stopColors, 5000);
            document.getElementById('options').disabled = true;
            break;
        default: 
    }
}

function stopColors() {
    clearInterval(x);
    //Placing the re-activator here instead works they way I intended,
    //after the repeat cycle is finished.
    document.getElementById('options').disabled = false;

}
$("#options").prop('selectedIndex',-1);
$("#options").change(function() {
  Colors('second');
});
4

1 に答える 1