我正在创建一个小部件来显示幻灯片上的信息。一旦用户与某个项目交互,就会出现PDF。我试图创建一个警报,如果显示器未与其交互约15秒,则会发出警报。我具备的功能可以正常使用,但跨越一个问题来了...我有以下代码:基于输入的JavaScript setTimeout
function alertQuestion(){
alertModal.style.display = "block";
var resumeSlideshow = setTimeout(closeAndPlaySlideshow,8000);
}
yesButton.onclick = function(){
alertModal.style.display = "none";
clearTimeout(resumeSlideshow);
setTimeout(alertQuestion,10000);
present = true
}
noButton.onclick = function(){
alertModal.style.display = "none";
modal.style.display = "none";
modal2.style.display = "none";
modal3.style.display = "none";
modalOpen = false;
clearTimeout(resumeSlideshow);
clearInterval(slideInterval);
playSlideshow();
}
如前所述,“alertQuestion()”函数显示后出现闲置一点点。警报模式包含两个问题“是”和“否”。按钮按照他们应该的方式工作。我有一个“setTimeout”方法,一旦警报模式出现,启动计时器并关闭所有内容,并在没有输入回复的情况下恢复幻灯片播放。但是,我遇到的问题是,即使用户单击“是”,我也无法获取“resumeSlideshow”超时值以清除。我想让输入被考虑,所以超时可以从0重新开始。到目前为止,用户可以点击“是”来保留和阅读,但是“resumeSlideshow”方法将继续并取消所有内容。任何修改和提示都会有所帮助。
我的猜测是范围。如果你使用'console.log(resumeSlideshow);'在yesbutton.onclick里面,我敢打赌它是不确定的。您可能必须将setTimeout附加到全局或使用您自己的事件。 – mkaatman