Image Change

Description:

リンクにマウスのポインタを合わせると、画像を変化させるスクリプトです。 最も普及しているスクリプトの一つです。

Demo:

Source:

<a href="http://www.yahoo.co.jp/">Yahoo</a>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>

<script language="JavaScript" type="text/javascript">
<!--
/* 画像の先行読み込み */
if(document.images) {
 var imgs = new Array();
 imgs[0] = new Image();  imgs[0].src = "../_image/card/0.gif"; //画像の設定
 imgs[1] = new Image();  imgs[1].src = "../_image/card/1.gif";
 imgs[2] = new Image();  imgs[2].src = "../_image/card/2.gif";
 imgs[3] = new Image();  imgs[3].src = "../_image/card/3.gif";
}

function chgimg(id, imgname) {
 if(document.images) {
  document.images[id].src = (imgs[imgname]) ? imgs[imgname].src : imgname;
 }
}
//-->
</script>

</head>

<body>


<a href="../index.html" onMouseOver="chgimg('img1',1)" onMouseOut="chgimg('img1',0)">
<img src="../_image/card/0.gif" name="img1">
</a>

<a href="../index.html"
  onMouseOver="chgimg('img2','../_image/card/2.gif')" onMouseOut="chgimg('img2','../_image/card/0.gif')">
<img src="../_image/card/0.gif" name="img2">
</a>

<a href="../index.html"
  onMouseOver="chgimg('img3',3)" onMouseOut="chgimg('img3','../_image/card/0.gif')">
<img src="../_image/card/0.gif" name="img3">
</a>


</body>
</html>

Advice:

設置の際、多少戸惑うことがあるやもしれませんので、少しプログラムの解説をします。

 imgs[0] = new Image();  imgs[0].src = "../_image/card/0.gif";
 imgs[1] = new Image();  imgs[1].src = "../_image/card/1.gif";
 imgs[2] = new Image();  imgs[2].src = "../_image/card/2.gif";
 imgs[3] = new Image();  imgs[3].src = "../_image/card/3.gif";

まず始めのこの部分ですが、画像をあらかじめ読み込んでいます(*この読み込みと言う作業をするとオンライン上でもイメージの変更がスムーズに行えます)。 "../_image/card/0.gif"や"../_image/card/1.gif"などがその読み込んでいる画像で、 Image Changeで使いたい画像を予めここで登録しています。登録した画像には それぞれ番号が振り分けられているのが分かると思います(imgs[2]など)。 この番号がその画像の識別番号となります。 例えば、使いたい画像を増やしたい場合は、上のスクリプトの続きに、

 imgs[4] = new Image();  imgs[4].src = "card4.gif";
 imgs[5] = new Image();  imgs[5].src = "card5.gif";


と識別番号を一つずつ繰り上げながら、画像を登録して行く事により 増やすことが出来ます。減らす場合はその逆の手順を行えばOKです。

<img src="../_image/card/0.gif" name="img1">

次に、変更する画像の<IMG>タグです。 変更対象の<IMG>タグには必ず、name を付けてください。 nameは好きな名前で構いません。 また変更対象の<IMG>タグを複数設置する場合、 それぞれのnameが被らないように(同じnameを付けないように)して下さい。 このNameを利用してその<IMG>タグの画像を変更します。

<a href="../index.html" onMouseOver="chgimg('img1',1)" onMouseOut="chgimg('img1',0)"> </a>

ハイパーリンクタグです。このリンクに挟まれた部分に触れることにより、 画像の変更を行います。(*Image Changeのサンプルでは、リンクの部分に変更対象の<IMG>タグを置いていますが、別に<IMG>タグをリンクの間に置く必要はありません。 例え、ページの離れたところに設置していても、nameの指定さえしていれば、 どこからでも変更出来ます)。さて、ハイパーリンクタグの中身を少し取り出して説明します。

onMouseOver="chgimg('img1',1)" onMouseOut="chgimg('img1',0)"

ハイパーリンクタグの中身です。画像を変更するハイパーリンクタグの中身には必ず、 この2つ(onMouseOver="..."とonMouseOut="...")を書いてください。 onMouseOverはマウスがリンクに触れたときの挙動、onMouseOutはリンクから離れた時の挙動を指します。

onMouseOverの中身の chgimg('img1',1) の 'img1'の部分は、先程あげた <IMG> タグのnameを指しています。 また2つめの太字の部分、1 の数字は、この解説一番始めに挙げた、 imgs[識別番号] = "...." の識別番号を指しています。 つまりこのリンクに触れた時、<IMG name="img1">タグの画像を imgs[1](先程の例で言うなら"../_image/card/1.gif")の画像に変更するという 意味になります。

onMouseOutの場合も同様で、chgimg('img1',0) は、 マウスがリンクから離れた時、 <IMG name="img1">タグの画像をimgs[0]("../_image/card/0.gif")の 画像に変えるという意味を持っています。 この"0.gif"という画像は<IMG name="img1">タグの元々の画像ですから、 見た目的には元に戻ったという感じになります。

ちなみに識別番号がなんやらよく分からないという方は、

<a href="index.html"
 onMouseOver="chgimg('img1','../_image/card/1.gif')" onMouseOut="chgimg('img1','../_image/card/0.gif')">

と番号の代わりに、画像のパスを直接書くことも出来ます。 こっちの方が分かりやすいかもしれませんね。

Arrangement:

複数の画像を同時に変更する

複数の画像を同時に変化させる場合は、onMouseOver、onMouseOutの中身に chgimg()を、";"を使用して併記する形にすれば出来ます。

<a href="../index.html" onMouseOver="chgimg('img1',1);chgimg('img2',2);" onMouseOut="chgimg('img1',0);chgimg('img2',0);">

別フレームの画像を変更する

別フレームの画像を変更したい場合は、スクリプトの中の

document.images[id].src = (imgs[imgname]) ? imgs[imgname].src : imgname;

と書かれている行を以下のように書き換えます。

  parent.main.document.images[id].src = (imgs[imgname]) ? imgs[imgname].src : imgname;
//mainはフレームの名前を指定。

Browser:

Internet Explorer4.0以上
Netscape Navigator3.0以上