Javaスクリプトを使ってクリッカブルマップで画像差し替え

このQ&Aのポイント
  • Javaスクリプトを使ってクリッカブルマップで画像差し替えをしています。
  • ボタン(1)(2)(3)の箇所にマウスオンをすると画像が切り替わり、エリアAにそれぞれ違う説明が表示される(ように見える)・・・というものをJavaスクリプトを使って作りました。
  • 切り替わった後のエリアAに表示された説明内に、更にクリッカブルマップを設定しリンクを貼りたいのですが、方法がわかりません。詳しい方、教えてください。
回答を見る
  • ベストアンサー

クリッカブルマップで切り替えた先の画像に部分リンク

javaスクリプトを使ってクリッカブルマップで画像差し替えをしています。(下記コード) イメージでいうとボタン(1)(2)(3)とエリアAで成る一枚の画像の、ボタン(1)(2)(3)の箇所にマウスオンをすると画像が切り替わり、エリアAにそれぞれ違う説明が表示される(ように見える)・・・というものをJavaスクリプトを使って作りました。 この、切り替わった後のエリアAに表示された説明内に、更にクリッカブルマップを設定しリンクを貼りたいのですが、方法がわかりません。 詳しい方、教えてください。 <script type="text/javascript"> function button1_over(){ var objElement = document.getElementById( 'map' ); objElement.src = '画像1'; } function button2_over(){ var objElement = document.getElementById( 'map' ); objElement.src = '画像2'; } function button3_over(){ var objElement = document.getElementById( 'map' ); objElement.src = '画像3'; } <figure> <img src="元画像" alt="○" usemap="#image_map" id="map" /> <map id="image_map" name="image_map"> <area shape="poly" coords="省略1" onmouseover="button1_over()" href="#" alt="~~~" /> <area shape="poly" coords="省略2" onmouseover="button2_over()" href="#" alt="~~~" />    <area shape="poly" coords="省略3" onmouseover="button3_over()" href="#" alt="~~~" /> </map> </figure>

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

>切り替わった後のエリアAに表示された説明内に、更にクリッカブルマップ >を設定しリンクを貼りたいのですが、方法がわかりません。 画像を入れ替えているだけなので、クリッカブルマップの仕組み自体はそのまま有効なのですが、画像ごとにボタンエリア以外にもエリアを追加設定したいのか、画像を入替えたところでボタンは消えてしまうのかが良くわかりません。(現状だとボタンの表示は消えても、クリッカブルマップは生きているはず) よくわかりませんが、ひとつの方法としては、画像切替と同時にusemap属性の参照先も替えてあげれば異なるマップを参照することが可能なはずです。 もしも、ボタンは常に表示されているのなら、それは画像とは切り離した仕組みで表示&制御するようにしたほうがよさそうに感じます。 (通常のメニューのようなつくりにするか、表示位置がバラバラならposition:absoluteで位置を指定するとか) あとはご質問と同様にマップ画像や参照先を切替えてあげればよろしいかと。 あるいは、ボタンに応じて異なるクリッカブルマップが表示されるようにしたいのであれば、画像を切り替えるのではなく、クリッカブルマップそのものを複数用意しておいて、それぞれのボタンに対応するマップを表示するようにしたほうがわかり易いのではないでしょうか。(他のマップは非表示)

qookie
質問者

お礼

ボタンとマップを別々の画像にすることで、希望通りの動きをするようになりました! ありがとうございました。

qookie
質問者

補足

>画像ごとにボタンエリア以外にもエリアを追加設定したい こういうことです!説明が下手ですいません。 ボタンは常に表示されています。 ということは、ボタンとエリアを一枚の画像で切り替えようとするより、ボタンとエリアをバラバラの画像にして、ボタンにオンマウスしたらエリア画像がそれぞれのクリッカブルマッに切り替わるようにした方がいい、ということですね。 その方向で考えてみます。 javaスクリプトはちんぷんかんぷんなので、また質問させてもらいます!

関連するQ&A

  • アイフレームとクリッカブルマップ

    こんばんわ、イメージマップ(クリッカブルマップ)とアイフレームを 一緒に使いたいのですが、どうしてもできません><   マップのソースが <IMG src="背景画像" usemap="#g" border="0"> <MAP name="g"> <AREA shape="poly" coords="470,471,466,479,457,482,448,479,445,471,448,463,457,460,466,463" href="★" target="aifurenaka" alt="MEMO"><!-- MEMO --> <AREA shape="poly" coords="547,464,543,472,534,475,525,472,522,464,525,456,534,453,543,456" href="★" target="aifurenaka" alt="ABOUT"><!-- ABOUT --> <AREA shape="poly" coords="622,470,618,478,609,481,600,478,597,470,600,462,609,459,618,462" href="★" target="aifurenaka" alt="BOARD"><!-- BOARD --> <AREA shape="poly" coords="692,467,688,475,679,478,670,475,667,467,670,459,679,456,688,459" href="★" target="aifurenaka" alt="MIX"><!-- MIX --> <AREA shape="default" nohref><!-- デフォルトエリア --> </MAP>

  • 複数画像にクリッカブルマップ

    当方、HTML・CSSは少しだけ分かりますが、javascriptの知識がありません。 添付の画像のように、 ひとつのHTML内に複数の画像を置き、それぞれの中に複数のクリッカブルマップ(ロールオーバーも可能) を設置したいのですがうまく動きません。。 ■javascript (動かず) if(navigator.appVersion.charAt(0) >=3){ var rolimg = new Array(); for( i = 0 ; i < 10 ; i++ ){ rolimg[i] = new Image(); } rolimg[0].src= "img/0.jpg" rolimg[1].src= "img/1.jpg" rolimg[2].src= "img/2.jpg" rolimg[3].src= "img/3.jpg" rolimg[4].src= "img/4.jpg" rolimg[5].src= "img/5.jpg" } function paintRol(dim,cnt){ if(navigator.appVersion.charAt(0) >= 3 ){ document.images[dim].src=rolimg[cnt].src; } } ■HTML <!--ひとつめの画像--> <img src="img/0.jpg" usemap="#map" name="rollover" /> map name="map" id="map"> <area shape="poly" coords="***,***,***,***,***,***,***,***,***,***,***,***" href="#" onMouseOver="paintRol('rollover',1)" onMouseOut="paintRol('rollover',0)" /> <area shape="poly" coords="***,***,***,***,***,***,***,***,***,***,***,***" href="#" onMouseOver="paintRol('rollover',2)" onMouseOut="paintRol('rollover',0)" /> <area shape="poly" coords="***,***,***,***,***,***,***,***,***,***,***,***" href="#" onMouseOver="paintRol('rollover',3)" onMouseOut="paintRol('rollover',0)" /> </map> <!--ふたつめの画像--> <img src="img/4.jpg" usemap="#map" name="rollover" /> map name="map" id="map"> <area shape="poly" coords="***,***,***,***,***,***,***,***,***,***,***,***" href="#" onMouseOver="paintRol('rollover',5)" onMouseOut="paintRol('rollover',0)" /> </map> ------ よろしくお願いします。

  • クリッカブル・マップのリンクが効かない

    下記のコードでpngの画像上でリンクをつけましたが、カーソルをかざしても反応が有りません。どこが間違っているのでしょうか? 皆様、ご教授お願いします <table width="750" align="center"> <tbody> <tr><td> <img src="top2.png" usemap="#top2"> <map name="top2"> <area shape="rect" coords="20,197,63,206" href="http://------.html" alt="A"> <area shape="rect" coords="78,198,121,206" href="http://------.html" alt="b"> <area shape="rect" coords="137,198,181,206" href="http://------.html" alt="c"> <area shape="rect" coords="196,198,239,206" href="http://------.html" alt="d"> <area shape="rect" coords="19,163,63,272" href="http://------.html" alt="e"> <area shape="rect" coords="77,264,121,272" href="http://------.html" alt="f"> </map> </td> </tr> </tbody> </table>

    • 締切済み
    • XML
  • HP制作。クリッカブルマップについて。

    HP制作。クリッカブルマップについて。 1つのページにクリッカブルマップを使った画像(オンマウスで画像を入れ替える)を二つ使いたいのですが(たとえばmapAとmapB)上手くいかず、mapAの位置にmapBの入れ替え画像が表示されてしまいます。自分では原因をつきとめることが出来ませんでした。 map nameは分けてあります。リンク先・画像・座標は省略しました。 <img src="画像" alt="マップ" id="map" usemap="#B" border="0"> <map name="A"> <area shape="poly" coords="(略)" nohref onmouseover="changeMapImage('画像')" onmouseout="changeMapImage('画像')" >  『省略』                  </map> <img src="画像" alt="マップ画像" id="map" usemap="#B"border="0"> <map name="B"> <area shape="rect" coords="(略)" href="●.html"onmouseover="changeMapImage('画像')" onmouseout="changeMapImage('画像')" alt="画像1"> <area shape="rect" coords="(略)" href="●.html"onmouseover="changeMapImage('画像')" onmouseout="changeMapImage('画像')" alt="画像2"> 『省略』 </map>

    • ベストアンサー
    • HTML
  • 初心者です。クリッカブルマップonclickの後

    javascript初心者です。 クリッカブルマップにおいて指定area内をクリックすると 画像が差し替えになる状態です。 差し替え後の画像はarea範囲よりも大きい(マップ全体と同一サイズ)なのですが このarea座標外でクリックして、元画像に戻るようにしたいです。 現在は、area座標内をクリックしないと元画像に戻りません。 ■jabascript function circle01_over(){ var objElement = document.getElementById( '元画像マップ' ); objElement.src = 'ロールオーバー後の画像(元画像と同じサイズで一部だけ変えたもの)'; } function image_out(){ var objElement = document.getElementById( '元画像マップ' ); objElement.src = '元画像マップ'; } function circle01_click(){ var objElement = document.getElementById( '元画像マップ' ); objElement.src = 'クリック後の画像'; } ■html <img src="元画像" class="hover" alt="" width="XXX" height="XXX" usemap="#Map" id="元画像マップ" name="元画像マップ" /> <map name="Map" id="Map"> <area shape="circle" coords="***,***,***" href="javascript:void(0);" onmouseover="circle01_over()" onmouseout="image_out()"" onclick="circle01_click(); return false;" alt="サンプル" /> 初歩的な事で申し訳ありません・・・ 尚、jQueryも新規リンク(html)も使用不可です。 添付画像のように動作させたいです。 宜しくお願い致します。

  • クリッカブルマップのリンクが‥

    クリッカブルマップでリンクさせたくて、記述いたしましたが、リンクが有効になっていません。 ブラウザ上では画像表示のままでハイパーリンクになっておらず、目的のページへ行けない状態です。 これは何が原因でしょうか。 以下、htmlの記述です。みなさま、どうかご教授のほどお願いします。 <img src="./images/menu1.jpg" usemap="#linkmap" border="0" height="81" width="500"> <map name="linkmap"> <area shape="rect" coords="x15,y22,x88,y53" href="$home" alt="ホーム"> <area shape=rect coords="x88,y22,x203,y53" HREF="http://"> <area shape=rect coords="x201,y22,x310,y53" HREF="./index.cgi?mode=top"> <area shape=rect coords="x309,y22,x418,y53" HREF="http://"> </map>

  • イメージマップ内のロールオーバーで切替後の画像のURL設定について。

    イメージマップ内のロールオーバーで切替後の画像のURL設定について。 下記のURLでは、3枚の画像を用意し、tab1,tab2,tab3,と三つのタブの場所にそれぞれイメージマップを利用してロールオーバー効果を持たせ、tabにカーソルが乗ったとき3枚の画像が切り替わるようになっています。 http://sky.geocities.jp/make_it_move/index.html そこで、皆さんにお聞きしたいのは、切り替わった画像それぞれに異なったリンクを指定する方法です。 ソースは <SCRIPT type="text/javascript" > function imgHover(path){ var target=document.getElementById('AreaMap'); var imagePath='./img/'+path; target.src=imagePath; } </SCRIPT> <body> <img src="img/image1.jpg" id="AreaMap" alt="地図" width="825" height="300" usemap="#imagemap" border="0" /> <map name="imagemap" id="imagemap"> <area shape="rect" coords="554,16,811,105" href="ttp://www.yahoo.co.jp/" alt="" onmouseover="imgHover('image1.jpg')" > <area shape="rect" coords="556,104,811,196" href="ttp://www.i-mezzo.net/" alt="" onmouseover="imgHover('image2.jpg')"> <area shape="rect" coords="556,195,812,287" href="ttp://www.kotaro269.com/" alt="" onmouseover="imgHover('image3.jpg')"> </map> です。 area shape部分にはurlを指定出来るのですが、切り替わった画像の image1,image2,image3部分にも、tab部分と同じurlを指定して上げるには、どのようにすればいいのでしょうか? 宜しくお願い致します。

  • クリッカブルマップでリンクを貼ったとき…

    クリッカブルマップでリンクを貼ったとき、リンク周りにborderのような、枠、色をつけることはできないのでしょうか? <IMG SRC="photo/建物配置図.jpg" ALT="選択してね" border="0" usemap="#haitizu"> <map name="haitizu"> <area shape="rect" coords="185,247,240,303" href="taikukann.html"" alt="体育館"> </map>

    • ベストアンサー
    • HTML
  • 画像毎に違うクリッカブルマップを設定したい

    地図画像を表示して複数のクリッカブルマップを配置し、ユーザが選択したら、詳細地図を表示してさらにそこでもクリッカブルマップを配置して、、、 という階層的に地図を辿られるようなコンテンツをつくろうと思っています。 JavaScriptで制御できると思って以下のようなコードを書いたのですが、 初期画像において、クリッカブルマップ(alt=area1)を押せば正常に動作しますが、 もう一方のクリッカブルマップ(alt=area2)を押すと、 IE6の場合にエラーが発生してブラウザが終了してしまいます。 尚、FireFoxでは正常に動作します。 どこに原因があるかも分らず手詰まり状態です。 同じ現象にあわれた方で解決策をご存知の方がいらっしゃれば、ご教授下さいm(_ _)m <html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"/> <script type="text/javascript"> <!-- function ChangeImg(mapname,usemapname) { document.map0.src = mapname; document.map0.useMap = usemapname; } //--> </script> </head> <body> <img src="map0.jpg" width="300" height="300" name="map0" useMap="#usemap0"> <map name="usemap0"> <area href="JavaScript:ChangeImg('map1.jpg','#usemap1')" shape="rect" alt="area1" coords="10,100,140,200"> <area href="JavaScript:ChangeImg('map2.jpg','#usemap2')" shape="rect" alt="area2" coords="150,100,290,200"> </map> <map name="usemap1"> <area href="http://google.co.jp" shape="rect" alt="shop1" coords="50,50,250,250"> </map> <map name="usemap2"> <area href="http://yahoo.co.jp" shape="rect" alt="shop2" coords="50,50,250,250"> </map> </body> </html>

  • クリッカブルマップをロールオーバーをしたい!

    画像の一部にクリッカブルマップを配して、その部分のみカーソルを当てると画像が変わるようにしたいのですが、以下の方法を見つけました。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1422869464 ですが、 <div> <img src="sample_01.jpg" alt="" width="650" height="149" border="0" usemap="#Map3" id="map"> <map name="Map3"> <area shape="rect" coords="26,105,167,131" href="#start" onmouseover="changeMapImage('sample_01_02.jpg')" onmouseout="changeMapImage('sample_01.jpg')"> </map> </div> <div> <img src="sample_02.jpg" alt="" width="650" height="149" border="0" usemap="#Map4" id="map"> <map name="Map4"> <area shape="rect" coords="26,105,167,131" href="#start" onmouseover="changeMapImage('sample_02_02.jpg')" onmouseout="changeMapImage('sample_02.jpg')"> </map> </div> このように、クリッカブルを配した画像が続いた場合、なぜか2番目の画像にカーソルを当てると、1番上の画像がロールオーバーされるという。。。 ジャバスクリプト初心者の私にはなぜだか全く分かりません。 他の方法(フラッシュなど)もあるようなのですが、この方法で解決方法を教えて頂けますでしょうか? どうぞよろしくお願いいたします。