首页 > 解决方案 > 单击按钮后Javascript取消SetTimeout

问题描述

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

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

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

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

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

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

如果单击 Ok 按钮,我应该如何清除 SetTimeout?提前感谢您的帮助

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

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; };

标签: javascript

解决方案


const myTimeout;

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

然后你可以取消它:

clearTimeout(myTimeout)

推荐阅读