2017-06-19 26 views
0

スライドショーの情報を表示するウィジェットを作成しています。ユーザーがアイテムとやり取りすると、PDFが表示されます。ディスプレイが約15秒間操作されていない場合に発生するアラートを作成しようとしています。私は完璧に働いた機能を持っていますが、問題に出くわす...私は、次のコードを持っている:述べたディスプレイは、少しのためにアイドル状態になった後、「alertQuestion()」機能が起動すると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(); 
    } 

を。警告モーダルには、「はい」と「いいえ」の2つの質問が含まれています。ボタンは必要に応じて機能します。私は "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