2017-06-19 66 views
0

我正在创建一个小部件来显示幻灯片上的信息。一旦用户与某个项目交互,就会出现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”方法将继续并取消所有内容。任何修改和提示都会有所帮助。

+0

我的猜测是范围。如果你使用'console.log(resumeSlideshow);'在yesbutton.onclick里面,我敢打赌它是不确定的。您可能必须将setTimeout附加到全局或使用您自己的事件。 – mkaatman

回答

0

您的变量不存在于函数的上下文之外。你需要把它移到外面

var resumeSlideshow; 
function alertQuestion(){ 
    alertModal.style.display = "block"; 
    resumeSlideshow = setTimeout(closeAndPlaySlideshow,8000); 
} 
+0

非常感谢......多么愚蠢的错误 – user7366442