スワップイメージ+リンクの変更

このQ&Aのポイント
  • テーブル内の画像とリンクをスワップするJavaScriptを探しています。
  • 画像とリンクが同時に変更されるスワップ機能が必要です。
  • イメージとリンクが同期してスワップされるJavaScriptをお探しです。
回答を見る
  • ベストアンサー

スワップイメージ+リンクの変更

まったくの素人ですが、お教えください。 以下のようなテーブルにそれぞれ画像とリンクをつけようとしています。 <table> <tr> <td rowspan="3"><a href="hoge.html"><img src="hoge.jpg"></a></td> <td><a href="a.html"><img src="a.jpg"></a></td> </tr> <tr><td><a href="b.html"><img src="b.jpg"></a></td></tr> <tr><td><a href="c.html"><img src="c.jpg"></a></td></tr> </table> a.jpg/b.jpg/c.jpg(以下、abc) がそれぞれメニューバーの項目で、 hoge.jpgを大きなメインの画面にしたいと思っています。 このとき、abcのいずれかをマウスオーバーするたびに、それぞれのイメージがhogeのエリアにスワップされ、かつそれぞれの項目のリンク(a.html/b.html/c.html)がhoge.htmlと置き換わるようなjavascriptを作りたいと考えています。 イメージのスワップだけならいくつも見つけることができたのですが、イメージとリンクが両方ともスワップされるようなものを、見つけることができませんでした。もしそのようなjavascriptがweb上にありましたら、お教えください。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

じゃ、データを隠しておいておいて、それをひっぱってきましょうか <script> window.onload=function(){ var tags=document.getElementsByTagName("img"); for(var i=0;i<tags.length;i++){ var cn=tags[i].className; if(cn!=""){ var img=document.getElementById(cn); if(img){ tags[i].img=img; hideimg=tags[i].nextSibling; while(hideimg){ if(hideimg.className=="hide") break; hideimg=hideimg.nextSibling; } tags[i].hideimg=hideimg; tags[i].onmouseover=function(){ this.img.src=this.hideimg.src; this.img.parentNode.href=this.parentNode.href; }; } } } } </script> <style> .hide{ display:none; } </style> <table> <tr> <td rowspan="3"><a href="hoge.html"><img src="hoge.jpg" id="swap1"></a></td> <td><a href="a.html"><img src="a.jpg" class="swap1"><img src="a-hoge.jpg" class="hide"></a></td></tr> <tr><td><a href="b.html"><img src="b.jpg" class="swap1"><img src="b-hoge.jpg" class="hide"></a></td></tr> <tr><td><a href="c.html"><img src="c.jpg" class="swap1"><img src="c-hoge.jpg" class="hide"></a></td></tr> </table>

bilateraria165
質問者

お礼

ありがとうございます!! 思っていたのとまったく同じものになりました!

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

どのくらい汎用性が必要かわからないのである程度調整しておきました hoge側のidと選ぶ側のclassを同じものを付けると動きます。 <script> window.onload=function(){ var tags=document.getElementsByTagName("img"); for(var i=0;i<tags.length;i++){ var cn=tags[i].className; if(cn!=""){ var img=document.getElementById(cn); if(img){ tags[i].img=img; tags[i].onmouseover=function(){ this.img.src=this.src; this.img.parentNode.href=this.parentNode.href; }; } } } } </script> <table> <tr> <td rowspan="3"><a href="hoge.html"><img src="hoge.jpg" id="swap1"></a></td> <td><a href="a.html"><img src="a.jpg" class="swap1"></a></td> </tr> <tr><td><a href="b.html"><img src="b.jpg" class="swap1"></a></td></tr> <tr><td><a href="c.html"><img src="c.jpg" class="swap1"></a></td></tr> </table>

bilateraria165
質問者

補足

早速のお返事ありがとうございます!! ただ、ちょっとこちらの質問に不備がありました。 上の例でhoge.jpgが300x225、abcが200x75というサイズを持っていて、すき間の無いテーブルの中に置かれている状況です。 (abcが右側の縦に3つ並んで、左にhoge.jpgがある) このとき、例えばa.jpgにマウスオーバーすると、hoge.jpgと「同じ大きさの画像(a-hoge.jpgとします)がhoge.jpgのエリアに表示され」かつ「リンクもhoge.htmlからa.htmlに変更される」というようなjavascriptにしたいのです。 質問が言葉足らずで申し訳ありません。 なにとぞよろしくお願いします。

関連するQ&A

  • スワップイメージ+リンクの変更 その2

    たびたび御世話になります。 以前、QNo.4078462で質問させていただいた者です。 http://oshiete1.goo.ne.jp/qa4078462.html 質問させていただいた問題は解決できたのですが、修正が必要となりました。 自分でなんとか解決してみようと試みたのですが、 少し時間が無いために改めて質問させてください。 以下のようなテーブルにそれぞれ画像とリンクをつけようとしています。 <table> <tr> <td rowspan="3"><a href="hoge.html"><img src="hoge.jpg"></a></td> <td><a href="a.html"><img src="a.jpg"></a></td> </tr> <tr><td><a href="b.html"><img src="b.jpg"></a></td></tr> <tr><td><a href="c.html"><img src="c.jpg"></a></td></tr> </table> a.jpg/b.jpg/c.jpg(以下、abc) がそれぞれメニューバーの項目で、 hoge.jpgを大きなメインの画面にしたいと思っています。このとき、 1. abcのいずれかをマウスオーバーするたびに、それぞれのイメージがhogeのエリアにスワップされる 2. abcからマウスを外すとhoge.jpgに戻る の2点を満たすjavascriptを御教授ください。 2. の条件がある分、以前と違ってリンクまでスワップされる必要はありません。

  • スワップイメージのフェード方法を教えてください

    はじめまして。 スワップイメージを、あるサイトを参考に作ってみました。 それにフェードイン/フェードアウトを追加したいのですが、いろいろと試してみましたができません。 JavaScriptは全く分からず、困っています。 お助けください。お願いします。 ちなみに以下がスワップイメージのソースです。 image画面に表示する際、フェードイン/アウトを追加してもらえると助かります。 <HEAD>  <script language="JavaScript">  <!--  Img = new Array()  Img[0]="img/image1.jpg"  Img[1]="img/image2.jpg"  Img[2]="img/image3.jpg"  AImgs = new Array()  for (i=0 ; i<Img.length ; i++){    AImgs[i] = new Image()   AImgs[i].src = Img[i]  }  function Swap(a,b){   a=a.name   document.images[a].src = Img[b]  }  //-->  </script> </HEAD> <BODY>  <TABLE>   <TR>    <TD><IMG src="img/image1.jpg" name="image"></TD>   </TR>   <TR>     <TD><A href="#" onmouseover="Swap(image,1)" onmouseout="Swap(image,0)"><img src="img/image2.jpg"></A></TD>    <TD><A href="#" onmouseover="Swap(image,2)" onmouseout="Swap(image,0)"><img src="img/image3.jpg" ></A></TD>   </TR>  </TABLE> </BODY>

  • table要素の使い道

    tableはレイアウトに使ってはいけないのは知っていますが、boxのなかに画像でリンクを作る簡単なメニューの場合は、リストとtableどちらを使ったほうがいいのでしょうか? こんな感じです。リストの場合はcssで同じような感じにします <table> <tr> <td><a href="#"><img src="a.png" alt=""></a></td> <td><a href="#"><img src="b.png" alt=""></a></td> </tr> <tr> <td><a href="#"><img src="c.png" alt=""></a></td> <td><a href="#"><img src="d.png" alt=""></a></td> </tr> </table>

    • ベストアンサー
    • HTML
  • ブログにリンク画像を並べて付けたいのですが、下記のタグを入れると「※ボ

    ブログにリンク画像を並べて付けたいのですが、下記のタグを入れると「※ボタンをクリックしてね」の文字と画像の間に何行かの空白が出来てしまいます。これを詰めるにはどうしたらよいでしょうか? ※ボタンをクリックしてね <TABLE><TR> <TD><a href="リンク先"><img src="images/1103fukunoki.jpg" width="134" height="86" alt="" class="pict" /></a></TD><TD> <a href="リンク先"><img src="images/1123yabusati.jpg" width="134" height="86" alt="" class="pict" /></a></TD> </TR> </TABLE>

  • 検索機能とページ送りのできるテーブルの作成について

    お世話になります <input type="text" name="search" id="search"> <table width="800" border="0" id="item" name="item">  <thead>   <tr>    <th></th>   </tr>  </thead>  <tbody>   <tr>    <td>     <a href="hoge.html">      <img src="hoge.jpg">     </a>     <b>ほげ</b>    </td>   </tr>   <tr>    <td>     <a href="hogehoge.html">      <img src="hogehoge.jpg">     </a>     <b>ほげほげ</b>    </td>   </tr>  </tbody> </table> ※本来はTR要素がもっと沢山増えます。 このテーブルに対して表示件数が5件を超えたらページ送りができるようにし、テキストボックスの内容で検索をかけて表示をしたいのですが、何か良い解決案はありませんか? 一応自分でもいろいろ調べて http://d.hatena.ne.jp/Rewish/20090703/1246615343 http://ponk.jp/?p=2413 を共存させるようとしてみたのですがどうもうまく動作しませんでした。

  • スワップイメージでテキストがブラウザにより変わらない

    java初心者ですが、サイトを参考にマウスオーバーで画像を変更、テキストも変更できるようになったのですが、IE、operaでは、テキストが変わるのですが、firefox、googleでは変わらないことに気が付きました。見よう見まねで組み込みましたので、詳細な理解ができておりません。宜しくお願い致します。 +--------------------------------+ | | | 画像 | | | +--------------------------------+ | テキスト | <=左記(A・B・C)の画像を +----------+----------+----------+ mouseoverで上記の画像 | A | B | C |  とテキストが変わる +----------+----------+----------+ <head> <script type="text/javascript" src="../js/swap_gallery.js"></script> </head> <body> <table> <tr> <td><img src="A.jpg" name="pict" id="pict" /></td> </tr> <tr> <td id="pict_text">説明を表示します</td> </tr> <tr> <td> <table> <tr> <td><img src="A.jpg" name="btn" width="80" height="60" border="0" id="btn" onmouseover="chg_gallery('btn','','A.jpg','pict','','A.jpg',1,'説明A')" onmouseout="" /></td> <td><img src="B.jpg" name="btn" width="80" height="60" border="0" id="btn" onmouseover="chg_gallery('btn','','B.jpg','pict','','B.jpg',1,'説明B')" onmouseout="" /></td> <td><img src="C.jpg" alt="" name="btn" width="80" height="60" border="0" id="btn" onmouseover="chg_gallery('btn','','C.jpg','pict','','C.jpg',1,'説明C')" onmouseout="" /></td> </tr> </table> </td> </tr> </table> </body> function chg_gallery(a, b, c, d, e, f, g, cText){ swapImage(a,b,c,d,e,f,g); changeText(cText); } function swapImage() { var i,j=0,x,a=swapImage.arguments; document.sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=findObj(a[i]))!=null){ document.sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2]; } } function findObj(n, d) { var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p); } if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } function changeText(cText) { if (document.all) { document.all["pict_text"].innerText = cText; } }

  • リンクをクリックして画像を切り替えるには?

    下記のようなソースなのですが、2枚目の画像に切り替わらず、表示されません。 何が悪いのでしょう? <header内>-------------------------------------> <SCRIPT type="text/javascript"> <!-- function showimg1(){ document.area.src = "/jp/shop/i/popup_usbcalc/cg4.jpg"; } function showimg2(){ document.area.src = "/jp/shop/i/popup_usbcalc/cg4_zoom.jpg"; } //--> </SCRIPT> -------------------------------------> <img src="cg4.jpg" alt="" name="area" /><br /> <table> <tbody> <tr> <td>[ <a href="javascript:void()" onclick="showimg1()">リンク1</a> ]</td> <td>[ <a href="javascript:void()" onclick="showimg2()">リンク2</a> ]</td> </tr> </tbody> </table>

  • <td> 内のテーブルを上寄せにするには?

    すみません教えていただけますか? 初心者です。 このまま表示するとTABLE A の直ぐ下のテーブルが中央に来てしまいます。 上寄せにしたいのですが、どのようにすればよいでしょうか? よろしくお願いします。 <table width="960" border="1"> <tr> <td width="160"> <!-- TABLE A --> <table width="160" border="1"> <tr> <td> <a href="" ><img src="subMenu.gif" /></a> </td> </tr> <tr> <td> <a href="" ><img src="subMenu.gif" /></a> </td> </tr> <tr> <td> <a href="" ><img src="subMenu.gif" /></a> </td> </tr> <tr> <td> <a href="" ><img src="subMenu.gif" /></a> </td> </tr> <tr> <td> <a href="" ><img src="subMenu.gif" /></a> </td> </tr> </table> </td> <td width="800" height="1200" border="1"> &nbsp; </td> </tr> </table>

    • ベストアンサー
    • HTML
  • セルの背景画像の変更

    リンクに触ると背景画像をp15.jpgに変更したいのですが よろしくお願いします。 <table> <tr><td>123</td> <td background="p10.jpg"><a hrf="abc.html">abc</A></td> <td>456</td> </tr></table>

  • 新しいウィンドをリンク指定したい。

    はじめまして、 最近webに興味があっていろいろ制作しています。 javascriptで新しいウィンドを作るのはいいんだけど、リンク指定ができない。 ーー<HTML>ーー <table align="center" width="100%" height="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="right"><iframe src="image.html" name="BG" width="100%" height="100%"></iframe></td> </tr> </table> <table border="2"> <tr> <td align="center"><a href="JavaScript:win_open('000');" target="BG"> <img src="../image/000.jpg"a></td> </tr> </table> ーー<JavaScript>ーー <!-- function win_open(preview) { new_win=window.open("","preview",); new_win.document.write("<HTML><HEAD><TITLE>"+preview+"</TITLE>.....); new_win.document.close(); } //--> <a href="JavaScript:win_open('000');" target="BG"> 上記の書式は使えないので困ってます。 なんとか助けていただけたいです。

専門家に質問してみよう