单击按钮后 JavaScript 取消 SetTimeout

标签 javascript

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

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

打开对话框输入后,10秒后自动点击取消按钮。

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

如果我在这 10 秒内单击“确定”按钮,我将收到以下错误。(因为 10 秒后,它将尝试自动单击不再存在的“取消”按钮;如果单击“确定”按钮,则取消按钮将消失)

未捕获类型错误:无法读取 null 的属性“click”

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

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

okButton.addEventListener('click', function (e) { okFunc(); e.preventDefault(); }, false); cancelButton.addEventListener('click', function (e) { cancelFunc(); e.preventDefault(); }, false); okButton.addEventListener('touchend', function (e) { okFunc(); e.preventDefault(); }, false); cancelButton.addEventListener('touchend', function (e) { cancelFunc(); e.preventDefault(); }, false);

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

最佳答案

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

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

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

关于单击按钮后 JavaScript 取消 SetTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53969965/

相关文章:

javascript - javascript 中参数列表(第 1 行)后缺少 )

javascript - 为什么 JavaScript 代码需要 "cut the binding"?

javascript - 什么时候可以断开套接字客户端

javascript - 正则表达式更改特定字符串

javascript - 如何在展开的 div 中使滚动条与对话框一起移动

javascript - Node JS 类型错误 : Cannot read property

javascript - 从字符串中获取td的innerhtml [JS]

javascript - ESnext 中的属性初始化器语法

javascript - 无法将值从工厂返回到服务 AngularJS

javascript - 这种 Rails 多线程方法有什么问题吗?