リンク解説表示機能ではフォーム内のテキストを変更することが出来ましたが、JAVAスクリプトにある「一度表示させた画像を後から差し替えられる機能」を用いれば、アンカーをマウスがポイントする度に画像を切替えることも出来ます。
ネットスケープ 2.x以外のスクリプトを実行でき、画像を表示できる環境なら、日本の代表的な検索エンジンの一覧の上に画像が表示され、リンクをポイントするとその画像がリンク先の検索エンジンのロゴマークに置き換わります。
それ以外の環境でも、メニューは問題無くご利用になれます。
アンカーのポイントで画像を変えるスクリプト「MenuGuidanceWithImages.js」は以下の通りです。
guide_name="Guide";guide_ext=".GIF";guide_width=62;guide_height=62;guide=new new Array();// 対象となる画像を検索。guide_imageNO=document.images.length;while (--guide_imageNO>=0) {if (document.images[guide_imageNO].src.indexOf(guide_name)>=0) break;}// 切り替える画像を登録。if (document.images) {i=3;while (--i>=0) {guide[i]=new Image(); guide[i].src=guide_name+i+guide_ext;}}// 実際の画像切替。function guideG(num) {if (document.images && guide_imageNO>-1) {document.images[guide_imageNO].src=guide[num].src;}}
今回は、HTML文書側にも細工が必要になります。
<ul class="images"><li><img alt="" src="Guide.GIF" width="62" height="62" /></li></ul><script type="text/javascript" charset="shift_jis" src="MenuGuidanceWithImages.js"></script><ul><li><a onmouseover="guideG(0)" onfocus="guideG(0)" href="http://www.yahoo.co.jp/">ヤフージャパン</a></li><li><a onmouseover="guideG(1)" onfocus="guideG(1)" href="http://www.yahoo.co.jp/" href="http://www.google.co.jp/">グーグル日本</a></li><li><a onmouseover="guideG(2)" onfocus="guideG(2)" href="http://www.yahoo.co.jp/" href="http://www.infoseek.co.jp/">インフォシーク</a></li></ul>
onmouseover属性は、アンカーにマウスカーソルがあてがわれた時点で起動するスクリプトを指定します。この場合、「onfocus(i)」という函数を起動する事になります。
onfocus属性は、当該アンカーがフォーカスされた状態(TABキーでカーソルが当該アンカー上に来た場合など)になったときに起動するスクリプトを指定します。
tabindex="整数"」属性を与えておき、スクリプトが出力するフォームの<textarea>要素には与えないと言うやり方でスクリプトが出力するフォームへのフォーカスを一番最後にすることが出来ます。このスクリプトの流れは、以下のようになります。
先ず、必要な前処理を行います。
先ず必要な変数を設定します。
guide_name="Guide";guide_ext=".GIF";guide_width=62;guide_height=62;guide=new new Array();
まず、
guide_name="画像ファイル名";」で表示させる画像の名前を指定しておきます。guide_ext=".画像拡張子";」で取扱う画像の拡張子を指定します。続いて、「guide=new Array();」で表示させる画像を収めた配列変数を宣言します。
続いてどの画像を切り替えの対象にするかを決め、表示させる画像を予め読込みます。
// 対象となる画像を検索。guide_imageNO=document.images.length;while (--guide_imageNO>=0) {if (document.images[guide_imageNO].src.indexOf(guide_name)>=0) break;}
こうする事で、HTML文書で表示する画像を追加, 削除, 或いは並べ替えを行っても、画像が特定出来るようになります。
HTML文書内の画像オブジェクト配列document.images[]オブジェクトについて、後ろから順番に画像のURLを srcプロパティで調べます。
該当する画像オブジェクト要素が見付かった場合にはそこで処理を打ち切ります。
その結果、変数 guide_imageNO には該当する画像の番号が入る事となります。
最後の準備として、切替に用いる画像を登録します。
// 切り替える画像を登録。if (document.images) {i=3;while (--i>=0) {guide[i]=new Image(); guide[i].src=guide_name+i+guide_ext;}document.write('<div><img alt="" src="'+guide_name+guide_ext+'" width="'+guide_width+'" height="'+guide_height+'" /></div>');}
「if (document.images) {」で画像を取り扱える事を確認した上で、四枚の画像のURLを登録します(この時に登録した画像は自動的に読込まれます)。
new Image」でImageオブジェクト型変数とし、この函数はアンカーにマウスカーソルがあてがわれた時点でonmouseover属性に依って、また、キーボードでフォーカスを当該アンカー上に移動させた際にonfocus属性に依って、それぞれ起動されるものとなっております。
// 実際の画像切替。function guideG(num) {if (document.images && guide_imageNO>-1) {document.images[guide_imageNO].src=guide[num].src;}}
「if (document.images && guide_imageNO>-1) {」で
を確認した上で、切り替えの対象となる画像のURL,すなわちsrcプロパティを引き数 num で指定した配列変数 guide の要素のsrcプロパティ値にする事で画像を切り替えます。
Copyright ©平成15年-平成24年 さいたま・しらぎくさいと 版権所有
marguerite.site@gmail.com