我有以下简单的if(confirm())
条件,例如
if(confirm('Some question')) {
agreed_function();
} else {
cancel_function();
}
function agreed_function() {
console.log('OK');
}
function cancel_function() {
console.log('Cancel');
}
现在,我不仅需要单击{Cancel(取消)”按钮,还需要调用cancel_function()
,而且如果经过一会儿(例如3秒钟后)也没有单击“ OK”(确定)按钮,则需要调用。因此,如果我们在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');
}
如何解决问题?
答案 0 :(得分:4)
但间隔不起作用
这是因为警报框(包括从confirm
创建的警报框)阻止了窗口上的执行。
这意味着您的代码将停止运行,直到关闭警报框。不幸的是,there doesn't seem to be a way to close these alert boxes programmatically,因此您必须等待用户与其交互,然后代码才能继续。
从历史上看,开发人员通过使用流行的UI库(例如JQuery has a model component)或从头开始创建自己的自定义模型,而不使用alert
生成的浏览器级别的模型来处理这类事情和confirm
。
但是要简单回答您的问题,由于警报框您的代码停止运行,因此这就是间隔无法按预期工作的原因。