【问题标题】:Javascript: How to disable a button instantly? [duplicate]Javascript:如何立即禁用按钮? [复制]
【发布时间】:2013-10-29 09:56:36
【问题描述】:

攻击 = 攻击按钮。

当我运行此代码(单击按钮)时,大约需要 1 秒才能禁用该按钮。如何将其设置为立即禁用?我假设这是因为 1000 毫秒计时器,但我不确定。

var disabledStartTimer = setInterval(disabledTimer, 1000);
var start = 0;

function disabledTimer() { 
    if (start > 5){
        clearInterval(disabledStartTimer);
        console.log("disabled timer stopped");
        blitz.disabled = false;
    }
    else {
        blitz.disabled = true;
        start++;
    };
}

【问题讨论】:

  • 你不能用1000替换来测试它吗?
  • 循环的目的是什么?
  • 你希望它在 start 为 5 时停止吗?因为你现在如何拥有它,它不会停止,直到开始是 6。

标签: javascript jquery html css dom


【解决方案1】:

是的,这是因为 1000 毫秒计时器。如果将其设置为 10,则禁用将需要 10 毫秒。如果您需要禁用它,请将blitz.disabled = true 代码移出(或复制)区间回调:

var disabledStartTimer = setInterval(disabledTimer, 1000);
var start = 1;  // set to 1 to maintain consistency (i.e. call blitz.disabled = true the same amount of times as the original code.

blitz.disabled = true;

function disabledTimer() { 

    if (start > 5) {
        clearInterval(disabledStartTimer);
        console.log("disabled timer stopped");
        blitz.disabled = false;
    }
    else {
        blitz.disabled = true;
        start++;
    }
}

如果你需要做更复杂的事情,而这段代码只是一个例子,你可以将你的复杂语句包装在一个函数中,然后在区间内外调用它:

var disabledStartTimer = setInterval(disabledTimer, 1000);
var start = 1; // set to 1 to maintain consistency (i.e. call blitz.disabled = true the same amount of times as the original code.

function disableBlitz() {
    blitz.disabled = true;
}

disableBlitz();

function disabledTimer() { 

    if (start > 5) {
        clearInterval(disabledStartTimer);
        console.log("disabled timer stopped");
        blitz.disabled = false;
    }
    else {
        disableBlitz();
        start++;
    }
}

【讨论】:

    【解决方案2】:

    将计时器设置为 0

    var disabledStartTimer = setInterval(disabledTimer, 0);
    

    或者直接调用

    disabledTimer();
    

    【讨论】:

      【解决方案3】:

      设置这个:

      var disabledStartTimer = setInterval(disabledTimer, 1000); // 1 sec
      

      对此:

      var disabledStartTimer = setInterval(disabledTimer, 0); // 0 sec
      

      因为这里的时间以毫秒为单位。你可以肯定,这真的是因为setInterval

      【讨论】:

      • 嘿嘿嘿!对此感到抱歉
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 2020-12-19
      • 2017-07-10
      相关资源
      最近更新 更多