リンク先を動的に変えたい方法とPDFへのリンク先の作り方

このQ&Aのポイント
  • サムネイルクリックで拡大画像が切り替わり、PDFリンクも変更する方法についてご教授ください。
  • 現在はサムネイルクリックで拡大画像は切り替えられていますが、PDFへのリンク先を変更する方法につまづいています。
  • サムネイルクリックで画像を切り替えると同時に、対応するPDFへのリンク先も変更する仕組みを作りたいのです。
回答を見る
  • ベストアンサー

リンク先を動的に変えたい

CGギャラリーを考えています。 サムネイルクリックで拡大画像が切り替わり、 ダウンロードボタンで適宜選ばれたPDFを別ウィンドウで開く仕組みです。 サムネイルクリックで拡大画像が切り替わるのは完成したのですが それに対応したPDFにリンクする部分がうまく作れません。 どうぞご教授お願いします。 //クリックされたサムネイルによって拡大画像を切り替え function myChgPic(myPic){ document.images["myImage"].src = myPic; } //サムネイルで選ばれた画像によってリンク先を変更 function myChgLink(){ window.open ("A.pdf"); //↑この飛び先を、myPicによってA.pdf、B.pdf、C.pdfと変更したい } //サムネイル <img src="A-s.gif" onclick="myChgPic('A-l.gif')"> <img src="B-s.gif" onclick="myChgPic('B-l.gif')"> <img src="C-s.gif" onclick="myChgPic('C-l.gif')"> //拡大画像 <img src="A-l.gif" name="myImage"> //ダウンロードボタン <a href="Javascript:myChgLink()"><img src="dl.gif"></a>

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

  • ベストアンサー
  • arexis
  • ベストアンサー率66% (66/99)
回答No.1

なるべくそのままで書きます <script> var pdf = ''; function myChgPic(myPic){ document.images["myImage"].src = myPic + '-l.gif'; pdf = myPic + '.pdf'; } function myChgLink(){ if(pdf) window.open (pdf); } </script> //サムネイル <img src="A-s.gif" onclick="myChgPic('A')"> <img src="B-s.gif" onclick="myChgPic('B')"> <img src="C-s.gif" onclick="myChgPic('C')"> サムネイル、本画像名、pdfファイルの名前が A、B、C の様に整理されているならこんなんで。

hayasida8
質問者

お礼

arexisさん、すっきりとした回答ありがとうございました。 当方も別の記述で解決しておりましたが arexisさんの記述を参考にして使いまわしのよい書き方に しようと思います。 以下、当方の対応です↓ //変数宣言 var myLinkURL="A.pdf"; //クリックされたサムネイルによって拡大画像を切り替え、リンク先を代入 function myChgPic(myPic,myLink){ document.images["myImage"].src = myPic; myLinkURL = myLink; } //サムネイルで選ばれた画像によって代入リンク先を指定して開く function myChgLink(){ window.open (myLinkURL); } //サムネイル <img src="A-s.gif" onclick="myChgPic('A-l.gif','A.pdf')"> <img src="B-s.gif" onclick="myChgPic('B-l.gif','b.pdf')"> <img src="C-s.gif" onclick="myChgPic('C-l.gif','C.pdf')"> //拡大画像 <img src="A-l.gif" name="myImage"> //ダウンロードボタン <a href="Javascript:myChgLink()"><img src="dl.gif"></a>

関連するQ&A

  • 正規表現について教えてください。

    正規表現について教えてください。以下は左に配置したサムネイル(X01s、X01as、X01bs・・・)をクリックすると右にそのサムネイルの拡大画像(X01l、X01al、X01bl・・・)を表示するページです。 サムネイルのimgタグを▼以下のようにしたいと考えています。 ※makethumbnail.cgiはサムネイル作成CGI 現在:<img src="X01s.jpg"> 変更後:<img src="/makethumbnail?src=X01s.jpg&w=100&h=&type="> ▼以下はダメでした。正規表現に問題があるのでしょうか。 <img src="/makethumbnail.cgi?src=' + img + 's' + ext + '&w=100&h=&type=" class="thumbnail" onclick="changeImage(this)"> お知恵をお借りできれば幸いです。 <head> <script type="text/javascript"> location.search.match(/^\?img=([^&]+)(\.[^&\.]+)&num=(.+)$/); var img = RegExp.$1; var ext = RegExp.$2; var num = Number(RegExp.$3); function changeImage(img){ var imgsrc = img.src || img; imgsrc.match(/^(.*)s(\.[^\.]+)$/); document.main.src = RegExp.$1 + "l" + RegExp.$2; return false; } document.write = img && ext && num ? document.write : function(){}; </script> </head> <body> <table> <tr> <th> <script type="text/javascript"> /* サムネイル */ document.write('<a href="#"><img src="' + img + 's' + ext + '" class="thumbnail" onclick="changeImage(this)"></a><br /><br />'); for (var i = 1; i < num; i++) { document.write('<a href="#"><img src="' + img + String.fromCharCode(0x60 + i) + 's' + ext + '" class="thumbnail" onclick="changeImage(this)"></a><br><br>'); } </script> </td> <td> <script type="text/javascript"> /* 拡大 */ document.write('<img src="' + img + 'l' + ext + '" name="main" id="main_image" />'); </script> </td> </tr></table>

  • JavaScriptでサイコロのようなものを作成しています。

    JavaScriptでサイコロのようなものを作成しています。 スタートボタンで"数字の画像"(diceX.gif)が順に入れ替わって、ストップボタンで止まる、というものなのですが、 この画像数字の入れ替わる範囲を"1-2の間で、1-3の間で・・・"というように変化させたく思っています。 現状は下記のように別々に並べて画像、スタート.ストップが表示されるよういなっていまが、 これをセレクトメニューで「2」を選択した場合は1-2の、「3」を選択した場合には1-3..の間での変化と 1つの画像、ボタン表示で済むようにしたいのですが、どのように記述すればよいのでしょうか? こういったものを作成するのは初めてで、様々なサイトを参考になんとかここまでこぎ着けましたがどうにも行き詰まってしまいました なにとぞ宜しくお願いいたします。 <SCRIPT LANGUAGE="JavaScript"> <!-- var myImage1 = new Image(); myImage1.src = "dice1.gif"; var myImage2 = new Image(); myImage2.src = "dice2.gif"; var myImage3 = new Image(); myImage3.src = "dice3.gif"; ・ ・ ・ var img =0; fileName = new Array("dice1.gif","dice2.gif","dice3.gif",・・・); function rotate2() { img = Math.floor(Math.random()*2); document.images["dice2"].src = fileName[img]; timer = setTimeout("rotate2()",30); } function stop2() { clearTimeout(timer); } function rotate3() { img = Math.floor(Math.random()*3); document.images["dice3"].src = fileName[img]; timer = setTimeout("rotate3()",30); } function stop3() { clearTimeout(timer); } ・ ・ ・ </SCRIPT> <BODY> <IMG src="dice2.gif" name="dice2"> <FORM action="javascript://"> <INPUT TYPE="submit" VALUE="start" onClick="rotate2()"> <INPUT TYPE="submit" VALUE="stop" onClick="stop2()"> </FORM> <IMG src="dice3.gif" name="dice3"> <FORM action="javascript://"> <INPUT TYPE="submit" VALUE="start" onClick="rotate3()"> <INPUT TYPE="submit" VALUE="stop" onClick="stop3()"> </FORM> ・ ・ ・

  • HP作成/ジャバスクリプトの記載方法

    こんにちは。HP作成初心者です。 下記のタグ(サムネイル画像をクリックすると、別窓で拡大表示)なんですが、別窓を開いた際に <BODY oncontextmenu="alert('右クリック禁止です');return false;">を記載して別窓内の右クリックを禁止させたいんですが、下記文章内のどのスペースに禁止タグを貼付ければよいか解らずに困っています。 よろしければアドバイス御願します。 サムネイル別窓ソース↓ a href="Javascript:tempWin.focus()" onClick="tempWin=window.open('s.t.gif','sample','width=400,height=400')" border="0"> <img src="s.t.gif" width="80" height="80" border="0"> <a href="Javascript:tempWin.focus()" onClick="tempWin=window.open('member1.jpg','sample','width=400,height=400')" border="0"> <img src="member1.jpg" width="80" height="80" border="0"></a> <a href="Javascript:tempWin.focus()" onClick="tempWin=window.open('member1.jpg','sample','width=400,height=400')" border="0"> <img src="member2.jpg" width="80" height="80" border="0"></a>

    • ベストアンサー
    • Mac
  • 画像IMGとイベントの関係

    イベントオブジェクトは独立しているので、documentから たどるのは無理かもしれませんが、方法がわからず困っています。 以下のようにBのイメージをクリックした場合、Bと表示するように したいのですが、どうすればよいでしょうか? IEとFireFoxを使っています。 function test(){ // ここでBのイメージをクリックしたなら、Bと表示させたい。 } <img alt="A" src="test_A.gif" onClick="test()"> <img alt="B" src="test_B.gif" onClick="test()"> <img alt="C" src="test_C.gif" onClick="test()">

  • java スライド クリック メニューについて

    左右に矢印画像がありクリックでサムネイルが移動するようなスクリプトにしたいです。 すみません、以下のようなスクリプトでサムネイル画像を横スクロールさせています。 実際にはスクロールではなく、一度に画像が配列されarrow_lをクリックすれば左にarrow_rをクリックすれば右に画像が移動するというようなサムネイル画像を作りたいのですが、以下のソースからどのようにすれば良いでしょうか? また参照できるサイトがあればお教えいただきたく思っております。 何卒宜しくお願いします。 <input type="image" src="img/arrow_l.gif" id="左" onclick="hs.direction='left'" value="←" /> <marquee id="hs" scrollamount="6" onmouseover="this.stop()" onmouseout="this.start()"> <img src="images/sum-bw2.jpg" alt="bw" hspace="2" border="0" /> <img src="images/sum-ex2.jpg" alt="bw" hspace="2" id="bw" /> <img src="images/sum-sh2.jpg" alt="bw" hspace="2" id="bw2" /> </marquee> <input type="image" src="img/arrow_r.gif" onclick="hs.direction='right'" value="→" />

  • サムネイルをマウスオーバー時に手のアイコンに変わってほしいのですが。。

    サムネイルをマウスオーバー時に手のアイコンに変わってほしいのですが。。 javascriptでサムネイルをクリックすると同一ページの離れた場所に拡大表示するという指示をしています。問題なく正常に動いていますが、サムネイルをマウスオーバーした際に手のアイコンに変わってほしいのですが、矢印のアイコンのままです。 javascriptの関係上、不可能なのでしょうか?? ソースは以下です。 -------------------------------------------------------------------------------- ■拡大表示させる窓 #zoombox ------------------------------------------------------------------------------- ■サムネイル画像 <img src="img/01_s.jpg" width="118" height="80" alt="s01" onClick="showImage(this);"/> -------------------------------------------------------------------------------- ■javascript function showImage(el) { var imageSrc = el.src.replace(/_s\.jpg$/, ".jpg"); document.getElementById("zoombox").innerHTML = '<img src="' + imageSrc + '">'; }

  • onClickへの代入について

    以前onClickへの代入方法についてお聞きしましたが、 また壁にぶつかっておりますので教えてください。 バナーのクリック数をカウントするために、GoogleAnalyticsの以下の関数をaタグのonClickに追加して利用しています。 <a href="xxx.html" onClick="javascript:urchinTracker(\'/test/test\');"><img src="xxx.gif"></a> これは問題ないのですが、 Javascriptで画像を切り替えるため以下のような構成でテストしたところ、 src、href、targetは正常に代入されるのですが、 onClickのみjavascript:urchinTracker(\'/test/test\');のままで、/test/aaaが代入されません。 また、元のHTMLソースからonClickタグ自体を削除すると、onClickタグそのものが代入されません。※Firebugで確認しています。 Javascritpt(sample_chg.js)部分 myImage = new Array(4); myImageName = 0; myImageLink = 1; myImageTarget = 2; myImageOnclick = 3; myImage[myImageName] = "dummy01.gif"; myImage[myImageLink] = "http://xxxxx.com/"; myImage[myImageTarget] = "_blank"; myImage[myImageOnclick] = "javascript:urchinTracker(\"/test/aaa\");"; function myChange(){ document.getElementById("myFormImg").src = myImage[myImageName]; document.getElementById("myLink").href =myImage[myImageLink]; document.getElementById("myLink").target =myImage[myImageTarget]; document.getElementById("myLink").onClick =myImage[myImageOnclick]; } HTML部分 <a id="myLink"onClick="javascript:urchinTracker(\'/test/test\');"><img id="myFormImg"></a> <script language="javascript" type="text/javascript" src="/js/sample_chg.js"></script> <script language="javascript" type="text/javascript"> myChange(); </script> 以前文字列については関数にして代入せよと教えていただいたのですが、 このような場合はどうすればよいのでしょうか。 どうぞよろしくお願い致します。

  • クリックして変更した画像を他の画像をクリックしたとき戻すには?

    以前、別で下記のような質問がありました。 ●質問------------------- 複数の同じ画像があるとします。 そのひとつをクリックすると画像が変わるようにします。 その後別の画像をクリックすると先ほどクリックした画像が初期の状態に戻るようにしたいのですが、どのような記述にすればよいのでしょうか? どなたかご教授おねがいします。 ---------------------- 上記の質問を受けての回答が下記のような感じで ●回答------------------- <script> function change(obj){ var orgimg="a.gif"; var newimg="b.gif"; var imgs=document.getElementsByTagName('img') for(var i=0;i<imgs.length;i++){ if(imgs[i].className==obj.className){ if(imgs[i]==obj) imgs[i].src=newimg; else imgs[i].src=orgimg; } } } </script> <img src="a.gif" class="hoge" onClick="change(this)"> <img src="a.gif" class="hoge" onClick="change(this)"> <img src="a.gif" class="hoge" onClick="change(this)"> ---------------------- これで終わってしまっていたのですが、画像が複数のパターンある場合はどのようにすればよいでしょうか。 例えば 「a1.gif」をクリックすると「a2.gif」に変更するようにして、さらに「b1.gif」というものがあって、クリックすると「b2.gif」に変更するように設定してあるとします。 「a1.gif」をクリックして「a2.gif」になっている状態で「b1.gif」をクリックすると「a2.gif」が「a1.gif」に戻るようにするにはどのようにすればよいでしょうか。 このb1が、c1,d1,e1・・・・とたくさんある感じです。 質問の内容がわかりづりかもしれませんが、どなたかご教示いただけると幸甚です。 宜しくお願い申し上げます。

  • JavaScriptに関する質問です

    ホームページをつくっていますJavaScript超初心者です。どなたか手助けをしていただけますでしょうか?やりたいことというのは、次の通りです。 とあるページがありまして、次のような項目が並んでいます。 <li><a href="#" onClick="window.open('f.html?1,'newWin','width=850,height=650')">テキスト1</a></li> <li><a href="#" onClick="window.open('f.html?2,'newWin','width=850,height=650')">テキスト2</a></li> <li><a href="#" onClick="window.open('f.html?3,'newWin','width=850,height=650')">テキスト3</a></li> それぞれのテキストをクリックすると、新しいウィンドウが表示され、次のJavaScriptが起動します。 function fx(){ var num = location.search.substr(1,1); var the_id1 = "s" + num.toString(); var img = document.getElementById(the_id1).getElementsByTagName("img"); img[0].src = ""←このあたりが特に分かりません。 } 最後に新しいウィンドウページのhtmlを書いておきます。 <div id="s1"><img src="img/s1w.gif" name="s1img"/></div> <div id="s2"><img src="img/s2w.gif" name="s2img"/></div> <div id="s3"><img src="img/s3w.gif" name="s3img"/></div>  このように始めのページの項目をクリックすると、javascript fx が起動してdiv s1 ~s3の画像を取得する(入れ替える)というようにしたいのです。 つまり、最初のページのテキスト1をクリックすればdiv s1の画像を入れ替える、テキスト2をクリックでdiv s2の画像を、という具合にです。  ←このあたりが分かりませんと書いたように、画像を別々に取得する方法が分かりません。 どのように改良すればいいでしょうか?もしくは全く新しいものに変える必要があるでしょうか? 分かる方、どなたか教えてください。よろしくお願いします。

  • 画像拡大で不具合発生

    画像をクリックすると拡大するという設定をした所、htmlファイルだと何も問題なく拡大できるのですが、HP上だと拡大できるヤツと出来ないヤツが発生しました。 漠然と質問ですが何が原因か分かる範囲でいいので教えてください。 <table> <tr style="font-size:8pt"> <td><img src="http:***1.gif" align="left" onClick="this.width=200" onMouseout="this.width=80">あ</td> <td><img src="http:***2.gif" align="left" onClick="this.width=200" onMouseout="this.width=80">い</td> <td><img src="http:***3.gif" align="left" onClick="this.width=200" onMouseout="this.width=80">う</td> </tr> </table> *文章が長くなるので省略しましたが実際は画像100枚分あります。 *元の画像サイズは80x80ピクセルで、ブラウザはIE6です。 (念のため、画像は著作権の無い物です)

    • ベストアンサー
    • HTML