[JavaScript] 時間指定できるオリジナル簡易スライダー

バナーとかの画像を10秒毎に切り替えていきたいときに使用するものです。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image Slider</title>
<script>
	// ミリ秒(3000ミリ秒->3秒)
	var setting_time = 3000;

	// 切替回数(0で指定なし)
	var numberOfIterations = 0;

	document.addEventListener("DOMContentLoaded", function() {

		// figure自体にclass指定がある場合
		//var figure = document.querySelector('.change');
		//var images = figure.children;
		//var loopVal = Array.from(images);

		// img自体にclass指定がある場合
		var images = document.querySelectorAll('.change');
		var loopVal = images;

		var currentImageIndex = 0;

		function showNextImage() {
			// 現在の画像を非表示にする
			images[currentImageIndex].style.display = 'none';

			// 次の画像のインデックスを計算
			currentImageIndex = (currentImageIndex + 1) % images.length;

			// 次の画像を表示する
			images[currentImageIndex].style.display = 'block';
		}

		// 初回表示のための処理
		loopVal.forEach(function(image, index) {
			if (index !== currentImageIndex) {
				image.style.display = 'none';
			}
		});

		// 指定時間毎に画像を切り替える
		var intervalId = setInterval(showNextImage, setting_time);

		var iterationCount = 0;

		function stopSlider() {

			if (numberOfIterations == 0) return;

			clearInterval(intervalId);

			// 指定回数繰り返し後に停止する
			iterationCount++;
			if (iterationCount === numberOfIterations) {
				clearInterval(intervalId);
			}
		}

		// 一定回数繰り返し後に停止する場合
		setTimeout(stopSlider, numberOfIterations * setting_time);
	});
</script>
</head>
<body>
	<figure>
		<a href="https://www.google.co.jp/"><img class="change" src="a.png" alt="a" /></a>
		<a href="https://www.yahoo.co.jp/"><img class="change" src="b.png" alt="b" /></a>
		<a href="https://www.msn.com/"><img class="change" src="c.png" alt="c" /></a>
	</figure>
</body>
</html>

この記事が気に入ったらサポートをしてみませんか?