画像の表示・活用 (HTML,CSS,JavaScript)

更新日:2003年07月22日

ランダムに画像を表示したい

JavaScriptを使って、ページが表示されるたびに画像リストの中からランダムに1つの画像が表示されるようにしてみましょう。ソースは簡単ですし、HTML内でコピー&ペーストで使用可能です。

JavaScriptでランダムに表示させるには?

JavaScriptで画像をランダムに表示させるには、次のようなソースをHTML中に記述します。

<script language="JavaScript">
   var imglist = new Array(
      "flowerA.jpg",
      "flowerB.jpg",
      "flowerC.gif",
      "flowerD.gif" );
   var selectnum = Math.floor((Math.random() * 100)) % imglist.length;
   var output = "<img src=" + imglist[selectnum] + ">";
   document.write(output);
</script>

画像を表示したい箇所に、上記のソースを記述して下さい。
書き換えるべき箇所は、画像ファイルを記述している、赤色太字(3行目~6行目)の部分だけです。

上記の例では、4つの画像ファイルを指定していますが、もっと増やすこともできます(減らすこともできます)。
その場合は、(例えば)3行目をコピーして、3行目と4行目の間に挿入していく形で増やしていくと良いでしょう。

なお、上記のソースだけでは、JavaScript非対応ブラウザへの配慮ができていません。この点については最後にご紹介致します。

簡単な解説

基本的に上記のソースをコピー&ペーストして頂くだけで動くのですが、ソースをご紹介するだけではスクリプトの意味がさっぱり分からないと思いますので、簡単にご説明致しましょう。
特に読み飛ばしても構いません。ソースはコピー&ペーストで構わないわけですから。スクリプトの意味を知りたい方々だけ、ご参照下さい。

■var imglist = new Array( ... );>

最初のこの部分では、imglist という配列を作成しています。この配列の中に、画像ファイル名を格納しています。

■var selectnum = Math.floor((Math.random() * 100)) % imglist.length;

まず、「 Math.random() 」で、0~1までのランダムな数が得られます。 「 * 100 」で、その値を100倍にしています。つまり、「 Math.random() * 100 」で、0~100までのランダムな数が得られるわけですね。
そのままでは(得られる数値に)小数点以下も含まれるので、「 Math.floor( ... ) 」で整数にしています。 「 Math.floor( ... ) 」は、( )の中の数に最も近い整数を返します。
従って、「 Math.floor((Math.random() * 100)) 」で、0~100までの整数の中からランダムに1つの数値が得られるわけです。
※もし100個を越える画像を使うなら、100倍ではなく1000倍などにする必要があります。

imglist.length 」は、最初に作成した配列の大きさです。画像を4つ用意したなら imglist.length の値は 4 になります。
??? % imglist.length 」とは、???imglist.length で割った余り を計算するという意味です。

つまり、ここの行では、「 0~100までの整数からランダムに1つ選び、その値を配列の長さで割った余り 」を求めることになります。
するとどうなるのかというと、配列の長さを n とすると「 0~(n-1) のうちランダムに1つを選ぶ 」ことになります。 画像が4つあるなら、「 0, 1, 2, 3 のうちランダムに1つ選ぶ」ことになるわけです。

■var output = "<img src=" + imglist[selectnum] + ">";

最後に、output 変数に出力するHTMLソースを代入しています。ここを書き換えれば、出力HTMLを自在に変更できます。
imglist[selectnum] で、ランダムに選ばれた1つの画像ファイル名が得られます。

以上、駆け足でスクリプトの意味をご紹介しましたが、お分かり頂けましたでしょうか。
※JavaScriptの基礎的な知識がないと難しいかも知れませんね…。
とりあえずコピー&ペーストで使用できますから、あまり深く考えずに使ってみて下さい。 出力HTMLをカスタマイズしたい場合は、最後の ver output... の行を書き換えるだけですから、まずは、ここをいじってみると良いと思います。

JavaScript非対応ブラウザへの配慮

さて、JavaScript非対応のブラウザや、JavaScriptをOFFにしているアクセス者への配慮も忘れずに行いましょう。
次のようなHTMLソースをJavaScriptソースの後に記述しておけば良いでしょう。

<noscript>
   <img src="flowerA.jpg" alt="花の画像">
</noscript>

上記のソースでは、ランダムに表示する予定だった画像の中から1つを選んで表示させています。
こうしておけば、JavaScriptをOFFにしているアクセス者でも、1つの画像は見えることになります。
※また、alt属性を指定しておくことで、画像の表示できないブラウザや画像表示をOFFにしているアクセス者にも表示内容が解るようにしています。

おわりに

アクセスするたびに異なる画像が表示されるのは、なかなか面白いと思います。
ぜひ、みなさんのページでも使ってみて下さい。

【関連記事】

1 2
  • 印刷する
  • ブックマークする
  • 携帯に送る
  • ブログに書く

あわせて読みたい

この記事の担当ガイド

写真

西村 文宏

関西大学大学院 総合情報学研究科 博士課程にて情報学を学ぶ傍ら、ホームページに関する書籍の執筆や企業…

続きを読む

住まいには、人の個性がよく現れるもの。同じ空間をどのように使うかで、雰囲気も、快適さも大きく変わってくる。ここでは、「建築家と家を建てる」ガイド の川畑博哉氏が厳選した10軒を紹介し、建築家それぞれのこだわりのポイントを紹介しよう。建築のプロたちが考え出した、マネしたくなるアイデアが満載! さぁ、いますぐチェック!

人気ホームページ作成ランキング

Powered by 価格.com

デジタル関連コミュニティ

北欧好きが、愛用の北欧モノを見せ合うコミュニティ

メルマガ登録

【デジタルメルマガ】オトナのオトコなら知っておきたい、PCやデジモノに関する情報をお届けします。

ショッピングカタログ

All About ウェブマガジン

女性向け

雨が楽しくなる!レイングッズ15

男性向け

マネしたくなるアイデア住宅

All About モバイル

QRコード

All Aboutがケータイで読める!

オススメ記事をメールでチェック

知識・経験を生かして、記事を書いてみませんか?