JavaScript には画像(イメージ)データを制御するための、 いくつかの方法が用意されています。
その1つは document オブジェクトの下に images オブジェクトがあり、 そのプロパティを利用する方法です。
Blue Banner青いバナー
Red Banner赤いバナー
Yellow Banner黄色いバナー
上の画像は以下の HTML コンテキストによって表示されています。
<IMG src="images/title_b.png" name="blue" hspace=0 vspace=0 border=0>Blue Banner<BR>
青いバナー<BR>
<IMG src="images/title_r.png" name="red" hspace=5 vspace=5 border=1>Red Banner<BR>
赤いバナー<BR>
<IMG src="images/title_y.png" name="yellow" hspace=10 vspace=10 border=2>Yellow Banner<BR>
黄色いバナー
document.images にはまたcomplete プロパティと onabort、onerror、onload というイベントがあり、
これらによって画像が正常に読み込まれたかどうかを調べることが出来ます。例えば、
<SCRIPT for="window" event="onload" type="text/javascript">
<!--
var errormsg = "";
for (i = 0; i < document.images.length; i++) {
document.images[ i ].onerror = errormsg += document.images[ i ].src +"\n";
}
alert("以下の画像読み込みに失敗\n" + errormsg);
//-->
</SCRIPT>
のようなソースをページの任意の位置に入れておくこともできます。
画像を制御するもう一つの方法を紹介しましょう。それは Image オブジェクトの生成です。 画像を動的に切り替えたいとき、マウスクリック、マウスオーバー、 或いはタイマーのようなイベントで次のようにして画像を入れ替えることが出来ます。
document.image1.src = "images/title_b.png";
しかし画像のサイズが大きく、また数がたくさんあるというようなとき、このようにいちいち画像のアドレスを呼び出していたのでは、 画像読み込みに時間がかかってしまいます。このオーバーヘッドを解決するには、画像をあらかじめバックグラウンドで読み込んでおくことです。
画像をバックグラウンドで読み込んでおくには Image オブジェクトを生成して、そのアドレスを指定しておきます。
blue = new Image( );
blue.src = "images/title_b.png";
画像がたくさんあるときはこの方法を繰り返します。画像入れ替えの際には画像のアドレスを指定する代わりに、 あらかじめ宣言しておいた Image オブジェクトの src を指定してやれば良いのです。
document.image1.src = blue.src;
実際の用例は以前に紹介した Sample 2 を参考にしてみて下さい。