JavaScriptでリンク先を変更する方法と対策

このQ&Aのポイント
  • JavaScriptでリンク先を変更する方法を探しています。jQueryを導入した際にリンク先の数値を変更したいが、jQueryの動作が停止してしまいます。
  • HTMLのソースは<a href="a?x=344&y=-53" class="a_a"><img src="#"></a>のような形式であり、画像をクリックしてリンクがa?x=344&y=-53なら別のページに誘導することを考えています。
  • JavaScriptでこれを実現することは可能でしょうか?また、対策方法があれば教えてください。
回答を見る
  • ベストアンサー

javascript リンク先の変更

遅くに失礼致します。 Javascriptで可能かどうかは分からないのですが リンク先を変更する手段を探しています。 現在ホームページを組んでおり、jQueryのスクリプトお導入した所、 リンク先に数値が指定してありその数値を変更したいのですが 変更するとjQueryが動作しなくなり困っております。 html側のソースは <a href="a?x=344&y=-53" class="a_a"><img src="#"></a> <a href="b?x=-50&y=0" class="a_b"><img src="#"></a> 等となっており、 画像をクリックしたら一度 a?x=344&y=-53.html に移動してから自動で別ページへ誘導する事を 考えてみたのですがその様なファイルが作れるはずもなく行き先を失いました。 クリックしてリンクが a?x=344&y=-53 なら ****.html に誘導等といった事はjavascriptで可能なのでしょうか? また、対策として何か方法があるようでしたらご教授頂ければ幸いです。 何卒、宜しくお願い致します。

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

  • ベストアンサー
  • shiren2
  • ベストアンサー率47% (139/295)
回答No.2

ANo.1です。 書いてから気付きましたが、href属性を変更するとスクリプトが動作しないのであれば、動的に変更しても駄目かもしれません。 onclick属性で実装した方が良いかもしれません。 参考までに。 <script type="text/javascript" src="./jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){  var map = {   "a?x=344&y=-53" : "aaa.html",   "b?x=-50&y=0" : "bbb.html",  };  $("a").click(function(){   var addr = $(this).attr("href");   if(addr in map){    location.href = map[addr];    return false;   }  }); }); </script> <a href="a?x=344&y=-53" class="a_a"><img src="#">AAA</a> <a href="b?x=-50&y=0" class="a_b"><img src="#">BBB</a>

buzinesswa
質問者

お礼

ありがとうございます。 まだ前回の解答の実験が出来ておらずいまから実験してみます。 返事が遅れまして失礼致しました><

その他の回答 (1)

  • shiren2
  • ベストアンサー率47% (139/295)
回答No.1

理解出来ているかわからないですが、こういうことでしょうか。 インデントは全角スペースになっています。 <script type="text/javascript" src="./jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){  var map = {   "a?x=344&y=-53" : "aaa.html",   "b?x=-50&y=0" : "bbb.html",  };  $("a").each(function(){   var addr = $(this).attr("href");   if(addr in map){ $(this).attr("href", map[addr]); }  }); }); </script> <a href="a?x=344&y=-53" class="a_a"><img src="#">AAA</a> <a href="b?x=-50&y=0" class="a_b"><img src="#">BBB</a>

buzinesswa
質問者

お礼

ソース見た感じやりたい事はそうです。 返答有難う御座います。 少し試してみますね。

関連するQ&A

  • JavaScriptでリンクを設定したい

    JavaScript超初心者です。 サイトで画像やテキストリンクが1ページにとても多く、 リンクアドレスも同一のものが数か所あります。 JavaScriptでリンクを設定すれば、リンクだらけにならないと聞いたので 使ってみようと思ったのですが、上手くいきません。 http://www.openspc2.org/reibun/javascript/link/020/ こちらのサイトを参考にやってみたのですが、 テキストリンク1カ所はできました。 でも、画像リンクはnullと表示されて画像も表示されなくなり、 2個目のテキストリンクはリンクになりません。 <a href="./aaa.html"><img src="./img/aaa.jpg" /></a> <a href="./aaa.html">あああ</a> <a href="./bbb.html"><img src="./img/bbb.jpg" /></a> <a href="./bbb.html">いいい</a> <a href="./aaa.html"><img src="./img/ccc.jpg" /></a> <a href="./aaa.html">ううう</a> このように表示されているリンクを JavaScriptでリンクを設定するにはどうしたらよいでしょうか? よろしくお願いします!

  • リンク先を動的に変更する

    簡単な仕様を考えて試行錯誤しながら勉強している ジャバスクリプ超初心者です どなたか宜しくお願いします <a href="○○○○○○○○○"><img src="photo01.jpg" width="200" height="150" border="0" id="change" name="change" /></a> のリンク部分のアドレスを動的に変更したいと思っています 画像とリンク要素両方を「document.write」で書き出し変数を与えてあげれば 出来る事はわかっているのですが 今回は自分の仕様で どこまでJSでできるものなのか知りたい事もありまして どうしても指定位置のリンク部分のアドレスだけを変更したいと思っています。 下記方法 document.link[インデックス].hrefで取得できるのですが この方法だと何番目のリンクかといちいち数えて数字を指定しなきゃいけない為リンク数が多くなった場合には ちょっと現実的ではありません そこで例えば指定位置の画像情報を取得するみたいに 「document.ID名.src」みたいに指定箇所の「a」要素の「href」を指定する事はできますでしょうか? ちなみに同じようにリンクに対してもやってみたのですがダメでした 下記が現在のソースになります。 宜しくお願いします。 ============================================================= JavaScript ============================================================= function img_chage(no){ img = new Array(); img[0] = "photo01_ov.jpg"; img[1] = "photo02_ov.jpg"; url = new Array(); url[0] = "http://www.google.co.jp"; url[1] = "http://www.goo.ne.jp"; document.change.src = img[no]; document.links[0].href = url[no]; } ============================================================= HTML ============================================================= <a href="http://www.yahoo.co.jp"><img src="photo01.jpg" width="200" height="150" border="0" id="change" name="change" /></a> <br /> <img src="photo01_ov.jpg" width="100" height="75" onMouseOver="img_chage(0)" /> <img src="photo02_ov.jpg" width="100" height="75" onMouseOver="img_chage(1)" />

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

    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>

  • javascriptで#のリンク先を設定する方法

    <a href="#">テスト</a> というリンクにもかかわらず、クリックすると http://hogehoge.jp/ のリンク先に飛ぶリンクを発見しました。 これは一体どうやっているのでしょうか? 多分、javascriptかjqueryを使っていると思うのですが。 Googleで探したのですが、 href="#" で検索しても、検索語でシャープを認識しないので思い通りの検索結果に辿り着くことが出来ませんでした。 どうぞ教えて下さい。

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

    まったくの素人ですが、お教えください。 以下のようなテーブルにそれぞれ画像とリンクをつけようとしています。 <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上にありましたら、お教えください。

  • リンク先のJavaScriptを実行するリンク

    a.htmには以下のようなJavaScriptが記載されています。 <a href="javascript:c_click(1)">test</a> a.htmの中にはclick内の数字が1~50程度のリンクがあり、 数字に応じて異なるJavaScriptが実行されるページです。 b.htmからa.htmの上記の<a href="javascript:c_click(1)">test</a>が実行されるリンクを作ることは可能なのでしょうか。 たとえば、b.htmに以下のようなHTMLを記述することを想定しています。 <a href="a.htmのjavascript:c_click(1)">test</a>

  • FIRE FOXで動かないJAVA SCRIPT

    ieやChromeでは正常に動くのですがFIRE FOXのみ正しく動作してくれません。 どこが間違っているのか教えてください。 FIREFOXでは1~5の画像は順に動いてくれるのですがサムネイルをクリックしても反応がおきません。 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"> </script> <script src="javascripts/jquery.megamenu.js" type="text/javascript"></script> <script type="text/javascript"> jQuery(function(){ var SelfLocation = window.location.href.split('?'); switch (SelfLocation[1]) { case "justify_right": jQuery(".megamenu").megamenu({ 'justify':'right' }); break; case "justify_left": default: jQuery(".megamenu").megamenu(); } }); /* 表示させたい画像へのパスをカンマで区切って記述する */ var gazo = new Array( "http://画像1.jpg", "http://画像2.jpg", "http://画像3.jpg", "http://画像4.jpg", "http://画像5.jpg" ); /* 表示させたい画像の順番に合わせてリンク先のパスをカンマで区切って記述する */ var link = new Array( "http://リンク1", "http://リンク2", "http://リンク3", "http://リンク4", "http://リンク5" ); var timer; var x = 0; function show(num) { clearTimeout(timer); /* サムネイル画像がクリックされた時はxの数値を変更します */ if (num != 999) { x = num; } /* id名がancのaタグのリンクを変更します */ document.getElementById('anc').setAttribute('href', link[x]); /* id名がmainphotoの中になるimgタグの画像を変更します */ $("#mainphoto img").before("<img src='"+gazo[x]+"' alt=''>"); /* fadeOutの速度は、slow、normal、fast、もしくは完了までの時間をミリ秒単位で指定します。*/ $("#mainphoto img:last").fadeOut("normal",function(){ $(this).remove() }); /* 何枚目の画像を表示するか設定します。 変数xで何枚目かを管理します。show()が実行される度にxの値を1加算します。 gazo.lengthでgazo配列の要素の数が分かります。 画像は0番目から数えるので「スライドする画像の数 - 1」の値になれば0に戻します */ if ( x == gazo.length - 1 ) /* 「スライドする画像の枚数 - 1 」の値を設定 */ { x = 0; /* 画像の番号を0(1枚目)に戻す */ } else { x = x + 1; /* 画像の番号を1つ進める */ } /* 「setTimeout("show()", 3000)」の3000でスライドする時間を変更します。 3000は3秒です。*/ timer = setTimeout("show(999)", 3000); }; </script> html部分↓ <p id="mainphoto"> <a href="リンク1"><img src="画像1" width="950" height="300" /></a> </p> <table width="950px"> <tr> <td width="20%" align="center"> <a href="JavaScript:show(0)"><img src="画像1" width="180"></a> </td> <td width="20%" align="center"> <a href="JavaScript:show(1)"><img src="画像2" width="180"></a> </td> <td width="20%" align="center"> <a href="JavaScript:show(2)"><img src="画像3" width="180"></a> </td> <td width="20%" align="center"> <a href="JavaScript:show(3)"><img src="画像4" width="180"></a> </td> <td width="20%" align="center"> <a href="JavaScript:show(4)"><img src="画像5" width="180"></a> </td> </tr> </table>

  • JavaScriptを使ってアンカーリンクでテキストを変更したい。

    JavaScriptを使ってアンカーリンクでテキストを変更したい。 JavaScriptを使ってアンカーリンクでテキストを変更したいのですがうまくいかず困っています。 A B C  <div class="A"> ○○○○○ ○○○○○ ← A群 ○○○○○ </div> Bのアンカーリンクを押したら A B C  <div class="B"> □□□□□ □□□□□ ← B群 □□□□□ </div> Cのアンカーリンクを押したら A B C  <div class="C"> △△△△△ △△△△△ ← C群 △△△△△ </div> というように同じページ内の同じ場所にcssのdisplay(none⇔block)で表示を入れ替えるようなスクリプトが書きたいのですがわかりません。 参考URLだけでもいいので宜しくお願いいたします。

  • Flashの呼び出しと、リンク設置

    HTML上にFLashを外部から読み込んで、リンクを設置したいと思っています。 <iframe src="http://~Flashの場所"> <script language="JavaScript" type="text/javascript"> document.write('<a href="http://(リンク先)" ><img src="http://(アクセス解析用1x1gif呼び出しURL"/></a>'); </script><noscript><a href="http://(リンク先)"><img src="http://(アクセス解析用URL)" /></a></noscript></iframe> こんな感じで記載したのですが、Flashは呼び出せるのですが、リンクがアクティブになりません。(クリックできません)原因は何でしょうか??よろしくお願いします。

    • ベストアンサー
    • Flash
  • jqueryの質問です

    jqueryで .tes01と.tes02は同じ番目をセットと考え .tes01 の画像をクリックした時に .tes02のリンクをクリックした状態にしたいと思っています。 .tes02のURLの取得は出来たのですがそれ以降が出来ないので教えてもらえますでしょうか。 $(function(){ $("ul.tes01 li").click(function(){ var tes01li = $(this).index(); var tes02li = $(".tes02 li").find("a").eq(tes01li).attr("href"); tes02li.click(); }); }); <ul class="tes01"> <li><img src="img01"></li> <li><img src="img02"></li> <li><img src="img03"></li> <li><img src="img04"></li> </ul> <ul class="tes02"> <li><a href="#link01">link01</a></li> <li><a href="#link02">link02</a></li> <li><a href="#link03">link03</a></li> <li><a href="#link04">link04</a></li> </ul>

専門家に質問してみよう