B. 画像と一緒にキャプションも切り替えるスライドショー完成
これまでに掲載したHTML+CSS+JavaScriptソースを表示すると、以下のように見えます。画像とキャプションを同時に切り替えるシンプルなスライドショー
実際に動作を試すには、サンプルページ「JavaScriptで作るスライドショーのサンプルB」をご覧下さい。
スライドショーサンプルBのソースまとめ
これまでに記述したソースを一括再掲しておきます。コピー&ペーストして使ってみる際にご活用下さい。■CSSソース:
CSSの記述は必須ではありません。
<style type="text/css"> .showbox { display: inline-block; } .showbox p { text-align: center; } .showbox img { border: 2px solid #00a; display: block; } #slidecaption { background-color: #00a; color: white; font-weight: bold; display: block; } </style>
■HTMLソース:
<div class="showbox"> <!-- ▼スライドショーを表示する場所 --> <p> <img src="slideshow.jpg" id="slideshow" alt="スライドショー表示領域"> <span id="slidecaption">キャプション</span> </p> <!-- ▼スライドショーの制御ボタンを表示 --> <p> <input type="button" value="- 開始/停止 -" id="startstopbutton"> </p> </div>
■JavaScriptソース:
以下のJavaScriptソースは、先のHTMLソースよりも後に記述して下さい。先のHTMLソースよりも前に読み込まれてしまうと動きません。
<script type="text/javascript"> // ------------------------------------------------------------ // ▼設定:スライドショーで見せたい画像ファイルとキャプション群 // ------------------------------------------------------------ var imgset = [ ["sky.jpg" , "1.空" ] , ["snowwoods.jpg" , "2.雪の山" ] , ["water.jpg" , "3.水面" ] , ["beachsky.jpg" , "4.ビーチ" ] , ["greenplain.jpg" , "5.平原" ] , ["seashipsky.jpg" , "6.海に浮かぶ船"] /* 最後にはカンマ不要 */ ]; // ----------------------------------------------- // ▼関数A:指定画像を順に表示させる // ----------------------------------------------- var counter = 0; function slideimage() { if( counter >= imgset.length ) { // カウンタが画像数よりも大きくなったら0番に戻す counter = 0; } document.getElementById('slideshow').src = imgset[counter][0]; document.getElementById('slidecaption').innerHTML = imgset[counter][1]; counter++; } // ----------------------------------------------- // ▼関数B:スライドショーを制御 // ----------------------------------------------- var slideid = 0; function startstopshow() { if( slideid == 0 ) { // 始まっていなければ始める slideid = setInterval(slideimage,1000); // 1000は切替秒数(ミリ秒) } else { // IDがあれば止める clearInterval(slideid); slideid = 0; } } // ▼ボタンクリックに関数を割り当てる document.getElementById('startstopbutton').onclick = startstopshow; </script>必要なソースは以上です。
■グローバル変数に関する注意:
このスライドショーサンプルBでは、ソースと説明を簡単にするために、同一ページ内にはスライドショーを1個しか掲載しないことを前提にしており、カウント用の変数などはすべてグローバル変数にしています。したがって、このままでは同一ページ内に複数個のスライドショーを設置できません。複数の設置を可能にするソースの書き方等については、最後の「サンプルC」をご覧下さい。
それでは、最後に「C. 同一ページ内で、個別に動作する複数のスライドショーを掲載できるバージョン」を見ていきましょう。