純粋なjavascriptでビルドして自動スライドショーで4枚の画像を表示しようとしています。 setInterval()とsetTimeout()関数は本当に私を混乱させます。純粋なjavascriptの自動スライドショーに関する問題
コードは最初の写真を表示してから3秒間待って最後の写真を表示してから終了します..... duno why ??
var divImages = document.getElementById("images");
var img1 = document.getElementById("img1"); //display:none using CSS
var img2 = document.getElementById("img2"); //display:none using CSS
var img3 = document.getElementById("img3"); //display:none using CSS
var img4 = document.getElementById("img4"); //display:none using CSS
window.addEventListener("load", getFirstImage);
function getFirstImage(){
img1.style.display = "block";
}
function getSecondImage(){
img2.style.display = "block";
img1.style.display = "none";
}
setTimeout(getSecondImage,3000);
function getThirdImage(){
img3.style.display = "block";
img2.style.display = "none";
}
setTimeout(getThirdImage,3000);
function getFourthImage(){
img4.style.display = "block";
img3.style.display = "none";
}
setTimeout(getFourthImage,3000);
ありがとう!これは素晴らしかった!楽しかった! – nishkaush
また、私はstopボタンを使ってclearInterval()を設定しています。しかし、それは全体の機能または4つのスライド全体が実行を終了した後にのみ実行されます。私がボタンをクリックするとすぐにスライドショーを終了したいのですが? – nishkaush
これも簡単です。グローバル変数 'latestId'を作成し、最新のタイマー(setTimeoutでスケジュールされた関数が実行された後、キャンセルされたチェックのようにbecozがidを使用していない)のid(setTimeoutの戻り値) 'clearInterval(lastestId)'を使用すると最新のタイマーとそれによってスケジュールされた機能を停止させるようになりました。これは 'setTimeout(getThirdImage、3000);'を 'latestId = setTimeout(getThirdImage、3000);' 実行されないので、 'setTimeout()'が含まれてチェーンが破損します – Viney