2017-01-10 10 views
0

クリックすると自動スライドショーの実行を停止するボタンを作成しようとしています。 clearTimeout()関数は、何らかの理由で機能しません。誰かが私にそれを動作させる方法を教えてもらえますか?は、JavaScriptコードでsetTimeout()をクリアする際に問題が発生する

var button = document.getElementById("button"); 
button.addEventListener("click",stop); 
function stop(){ 
    **clearTimeout(t);** 
} 

window.addEventListener("load",finalResult); 

**var t = setTimeout(function(){finalResult()},0);** 

function finalResult(){ 
    getFirstImage(); 

    function getFirstImage(){ 
    img1.style.display = "block"; 
    setTimeout(getSecondImage,3000); 
} 

function getSecondImage(){ 
    img1.style.display = "none"; 
    img2.style.display = "block"; 
    setTimeout(getThirdImage,3000); 
    } 

function getThirdImage(){ 
    img3.style.display = "block"; 
    img2.style.display = "none"; 
    setTimeout(getFourthImage,3000); 
} 

function getFourthImage(){ 
    img4.style.display = "block"; 
    img3.style.display = "none"; 
    setTimeout(loopAgain,3000); 
} 

function loopAgain(){ 
    img4.style.display = "none"; 
    setTimeout(getFirstImage,0); 
} 


} 
+2

あなたはタイムアウトを0に設定しているので、それが起こる前に、あなたがクリックする方法はありません。 –

+1

あなたが設定した他のタイムアウト( 'setTimeout(getFirstImage、0);')をクリアするために 't'をクリアすることを期待していますか?それはできないからです。個々のタイムアウトをクリアする必要があります – Liam

答えて

1

ページにあるすべてのタイムアウトをクリアする必要があります。

このような何か:

var button = document.getElementById("button"); 
button.addEventListener("click", stop); 

function stop() { 
    clearTimeout(t); 
    clearTimeout(a); 
    clearTimeout(b); 
    clearTimeout(c); 
    clearTimeout(d); 
    clearTimeout(e); 
} 

window.addEventListener("load", finalResult); 

var t = setTimeout(function() { 
    finalResult() 
}, 100); 

var a, b, c, d, e; 

function finalResult() { 
    getFirstImage(); 

    function getFirstImage() { 
    img1.style.display = "block"; 
    a = setTimeout(getSecondImage, 3000); 
    } 

    function getSecondImage() { 
    img1.style.display = "none"; 
    img2.style.display = "block"; 
    b = setTimeout(getThirdImage, 3000); 
    } 

    function getThirdImage() { 
    img3.style.display = "block"; 
    img2.style.display = "none"; 
    c = setTimeout(getFourthImage, 3000); 
    } 

    function getFourthImage() { 
    img4.style.display = "block"; 
    img3.style.display = "none"; 
    d = setTimeout(loopAgain, 3000); 
    } 

    function loopAgain() { 
    img4.style.display = "none"; 
    e = setTimeout(getFirstImage, 0); 
    } 
} 
関連する問題