ロールオーバー(スワップイメージ)の実装 更新版。

以前に、『ロールオーバーの実装 最新版。』で、ちょこっとだけ書いたんですが、
汎用性が低くて、個人的にイマイチだったので、
しかも肝心のロールオーバー時の関数もはしょったので、
改めて、汎用性を高めたものを書いてみます。

今回は、完全オリジナルではなく、この記事を参考にさせてもらいました。。
ていうか、ほぼ、まんまです(笑)。。

function setRollOver(){
 if(!document.getElementsByTagName) return false;
 var ovrImgList = document.getElementsByTagName("img");
 for(var i=0;i<ovrImgList.length;i++){
  if(ovrImgList[i].className.match("ovr")){
   ovrImgList[i].onmouseover = function(){
    this.src = this.src.replace(/_off./i,"_on.");
    return false;
   }
   ovrImgList[i].onmouseout = function(){
    this.src = this.src.replace(/_on./i,"_off.");
    return false;
   }
  }
 }
}
window.onload = setRollOver;

いつも通り、簡単に説明しますと、
まず最初のif文でgetElementsByTagNameがサポートされているかを確認します。
(サポートされていないブラウザはここで終了。)

次にovrImgListに、そのページの全てのimgタグ(ノード)を格納します。
そしてfor文で、overImgListを全部最初から順番に確認して、
もしclassにovrが指定されていれば、
イベントハンドラ(ここではonmouseoverとonmouseout)に、
実行する関数(function)を設定してます。

で、肝心のimgを切り替える部分ですが、
その前に、ファイルの命名規則を以下のように定めるものとします。
通常時 → 〜_off.gif
オーバー時 → 〜_on.gif

上記の命名規則を踏まえて、処理を説明すると、
まず、オーバーした時のimgタグのsrc属性を見て、
_off.という文字列があれば、この部分を_on.に置換し、
src属性を置換したものと入れ替えるといった具合です。

これで、html内にいちいちイベントハンドラや、name,id属性を設定しなくても、
class="ovr"だけを書いてあげれば、ロールオーバーを簡単に実装出来ます。

ん〜、満足満足。

Add Bookmark

Comments List

説明文には、置換する内容に "."(ドット)が含まれていますが、
コードには入っていなかったので、修正しました。
参考にされた方、すみません。。

Commented:
2007/11/30 1:54 AM by trust

Post Comment

TrackBack URL

http://blog.trustworks.biz/cgi-bin/mt-tb.cgi/16

2010/01

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Studying

  • RSS2.0
  • Skype