单击按钮后,Javascript取消SetTimeout

时间:2018-12-29 13:24:04

标签: javascript

有一个确定按钮和一个取消按钮

下面的代码将执行此操作:

打开对话框输入后,在10秒钟后自动单击“取消”按钮。

if(SceneManager._scene instanceof Scene_InputDialog) {
  setTimeout(function () {document.getElementById("inputDialog-CancelBtn").click();}, 10000);
}

如果在这10次点击中单击确定按钮,则会在下面显示此错误。(因为10秒钟后,它将尝试自动单击不再存在的取消按钮;如果单击确定按钮,则取消按钮将消失)

未捕获的类型错误:无法读取null的正确“点击”

如果单击“确定”按钮,应该如何清除SetTimeout? 预先感谢您的帮助

如果需要添加对“确定”按钮处理程序的引用,应如何添加它。 下面是我的其他代码。

  

okButton.addEventListener('click',函数(e){        okFunc();        e.preventDefault();      },错误);      cancelButton.addEventListener('click',function(e){        cancelFunc();        e.preventDefault();      },错误);      okButton.addEventListener('touchend',函数(e){        okFunc();        e.preventDefault();      },错误);      cancelButton.addEventListener('touchend',函数(e){        cancelFunc();        e.preventDefault();      },错误);

     

this._okFunc = okFunc;      this._cancelFunc = cancelFunc;    };

2 个答案:

答案 0 :(得分:1)

const myTimeout;

if(SceneManager._scene instanceof Scene_InputDialog) {
    myTimeout = setTimeout(function () {
      document.getElementById("inputDialog-CancelBtn").click();
  }, 10000);
}

然后您可以通过以下方式取消它:

clearTimeout(myTimeout)

答案 1 :(得分:1)

您可以在document.getElementById("inputDialog-CancelBtn")之前先检查.click()是否不为空

if(SceneManager._scene instanceof Scene_InputDialog) {
  setTimeout(function () {
    const cancelBtn = document.getElementById("inputDialog-CancelBtn");
    if(cancelBtn) { 
      cancelBtn.click() 
    }
  }, 10000);
}

要清除超时,“确定”按钮的单击处理程序需要引用超时,因此只需进行空检查就更容易了

相关问题