我有以下简单的if(confirm())
条件
if(confirm('Some question')) {
agreed_function();
} else {
cancel_function();
}
function agreed_function() {
console.log('OK');
}
function cancel_function() {
console.log('Cancel');
}
现在我需要调用 cancel_function()
不仅在我们单击“取消”按钮时,而且在一段时间后(例如 3 秒后)没有单击“确定”按钮时.因此,如果我们在 3 秒内单击“确定”,则不会调用 cancel_function()
。
所以这是我的代码,其中只有 if(confirm())
有效,但间隔无效
var interval = setInterval(function() {
cancel_function();
}, 3000);
if(confirm('Some question')) {
clearInterval(interval);
agreed_function();
} else {
clearInterval(interval); // not to call the cancel_function() every 3 seconds
cancel_function();
}
function agreed_function() {
console.log('OK');
}
function cancel_function() {
console.log('Cancel');
}
如何解决问题?
最佳答案
but the interval doesn't [work]
这是因为警告框(包括从 confirm
创建的警告框)阻止了窗口上的执行。
这意味着您的代码将停止运行,直到警告框关闭。不幸的是,there doesn't seem to be a way to close these alert boxes programmatically ,因此您必须等待用户与它交互,然后您的代码才能继续。
从历史上看,开发人员通过在流行的 UI 库(例如 JQuery has a model component)的帮助下或从头开始创建自己的自定义模型来处理此类事情,而不是使用 alert
生成的浏览器级模型> 和确认
。
但简单地回答您的问题,您的代码由于警告框而停止运行,因此这就是间隔无法按预期工作的原因。
关于javascript - 无法在纯 JS 中组合 setInterval() 和 if(confirm()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57929498/