2017-10-24 6 views
0

ユーザーがページを読み込むと、8秒後にメッセージを表示する「タイマー」がトリガーされます。 私の問題は、ユーザーが8秒前にdiv #contentAfterIntroをクリックした場合にメッセージが表示されないようにすることです。JavascriptまたはJqueryのdivをユーザーがクリックした場合の関数の実行を停止する

xoxo(); 
function xoxo(e) { 
    setTimeout(showMessage, 8000); 
    $("#contentAfterIntro").on('click', function(e) { 
    e.stopPropagation(); 
    }); 
} 

function showMessage() { 
    $('#msg').addClass('visible'); 
    console.log('show msg'); 
    } 

上記のコードは機能しません。私のテストでは、たとえ8秒前にクリックしても、メッセージが表示されます。

これを行うには?

答えて

5

setTimeoutは、あなたがタイムアウトをキャンセルするために使用できるIDを返します。

xoxo(); 
function xoxo(e) { 
    var id = setTimeout(showMessage, 8000); 
    $("#contentAfterIntro").on('click', function(e) { 
    e.stopPropagation(); 
    clearTimeout(id); // <--- clear timeout 
    }); 
} 

function showMessage() { 
    $('#msg').addClass('visible'); 
    console.log('show msg'); 
} 
+0

私は今みます。私はcleartimeout(id)を使用する場合でもe.stopPropagation()が必要ですか? – Mathieu

+0

'stopPropagation'はタイムアウトとは関係なく、clickイベントだけとなります。それがタイムアウトを止めようとしただけだったなら、あなたはそれを必要としません。 –

+0

ありがとう、私はそれを削除します – Mathieu

関連する問題