• ベストアンサー

テキストのリンクをON/OFFする

Javascriptでテキストをクリックすると2箇所の画像を同時に変更することができたのですが、表示されている画像のテキストのリンクをはずす方法がわかりません。はじめは「ページ3+4」のテキストのみがクリッカブルで、「ページ3+4」のテキストをクリックすると、「ページ1+2」のテキストのみがクリッカブルになるようにしたいのです。表示されていない画像のテキストのみをクリッカブルにする方法をどなたか教えていただけますでしょうか? <script language="JavaScript"> <!-- function swapImg(imgfile1,imgfile2) { document.swpimg1.src = imgfile1; document.swpimg2.src = imgfile2; } // --> </script> <div><img src="sample1.gif" name="swpimg1" /><img src="sample2.gif" name="swpimg2" /></div> <div><a href="javascript:swapImg('sample1.gif','sample2.gif')">ページ1+2</a> <a href="javascript:swapImg('sample3.gif','sample4.gif')">ページ3+4</a></div>

  • rei5
  • お礼率60% (3/5)

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

  • ベストアンサー
  • HIRSYU
  • ベストアンサー率51% (45/87)
回答No.2

「document.swpimg1.src」のような手法は、あまり推奨されていません。 nameではなく、idを付与し、idで参照する手法の方が推奨されています。 -- JavaScript -- document.getElementById("swpimg1").src = imgfile1; document.getElementById("swpimg2").src = imgfile2; -- HTML -- <div><img src="sample1.gif" id="swpimg1" /><img src="sample2.gif" id="swpimg2" /></div> で、質問に対する回答ですが、ANo1さんが言うとおりです。 ただ、無理やり、それらしい動きをするのを作ってみました。 -- JavaScript -- function swapImg(elem, imgfile1,imgfile2) { //画像を変更。 document.getElementById("swpimg1").src = imgfile1; document.getElementById("swpimg2").src = imgfile2; //id="list"内にある、aタグ一覧を取得する。 var aList = document.getElementById("list").getElementsByTagName("a"); //aタグ一覧をループ。 for(var i = 0; i < aList.length; i++){ if(aList[i].id == elem.id){ //aタグと、実行元が同じの場合、通常テキストを表示。 document.getElementById(aList[i].id).style.display = "none"; document.getElementById(aList[i].id + "_1").style.display = "inline"; }else{ //aタグと、実行元が異なる場合、リンクテキストを表示。 document.getElementById(aList[i].id).style.display = "inline"; document.getElementById(aList[i].id + "_1").style.display = "none"; } } } -- HTML -- <div><img src="sample1.gif" id="swpimg1" /><img src="sample2.gif" id="swpimg2" /></div> <div id="list"><a id="a1" href="javascript:void(0)" onclick="swapImg(this, 'sample1.gif','sample2.gif');">ページ1+2</a><span id="a1_1" style="display:none;">ページ1+2</span> <a id="a2" href="javascript:void(0)" onclick="swapImg(this, 'sample3.gif','sample4.gif');">ページ3+4</a><span id="a2_1" style="display:none;">ページ3+4</span></div> 仕組み(動作)は、 1.リンクテキストと、通常テキストをHTMLに埋め込む。 2.通常テキストは、スタイルシートで非表示にしておく。 3.リンクをクリックした際には、リンクテキストを非表示に、通常テキストを表示状態に変更。 あと、swapImgの引数に、自分自身を受け取るように追加。 href要素でJavaScriptの関数を呼び出すと、自分自身を引数に渡せないようでしたので、hrefでは何もせず、onclickで実行するように変更。

rei5
質問者

お礼

とりあえず教えていただきました -- JavaScript -- document.getElementById("swpimg1").src = imgfile1; document.getElementById("swpimg2").src = imgfile2; -- HTML -- <div><img src="sample1.gif" id="swpimg1" /><img src="sample2.gif" id="swpimg2" /></div> の方法を利用しようと思います。 これならリンクはついたままですが、画像が表示されないことはないので。 せっかくいい方法を教えていただいたのに、あきらめるようで残念ですが、かなり勉強になりました。ありがとうございました。

rei5
質問者

補足

ありがとうございます。早速やってみました。 ローカルではうまくいったのですが、アップロードすると、なぜかIE(バージョンは6を使用しています)で「ページ3+4」をクリックすると画像が表示されません。 画像表示エリアを右クリックで「show picture」をクリックすると画像が表示されるので、コードの問題ではなくブラウザの設定の問題なのかなと思いますが、「show pictures」もチェックが入っていましたし、セキュリティをデフォルトにしたりしたのですが、表示されません。 デフォルトの設定で表示されたほうがいいので、なにかアドバイスがありましたら、よろしくお願いします。

その他の回答 (1)

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

・ <a>タグ自身には、無効にする属性はないようなので、自分で色を変えて実行を無視するという方法を考えてみてください。

rei5
質問者

お礼

<u>タグをつけたり、テキストの切替を利用したりとやってみたのですが、あまり詳しくないので、うまくできませんでした。 <a>タグ自身を無効にする属性はないのですね。 ありがとうございました。

関連するQ&A

  • リンクのスタイルをテキストと画像を別々にするには?

    リンクのスタイルの設定で詰まってしまい困っています。 テキストと下線部分にpaddingを入れたいため、text-decorationではなくborderで下線を設定しています。 このような場合、 画像のみborderを消し、テキストのみにborderを適応させることは可能でしょうか? <a href="#"><img src="hoge.gif"></a><a href="javaScript..." >テキスト</a>のように書けば簡単なのですが、挙動が望んでいたものと違ってしまうため、<a href="javaScript..."><img src="hoge.gif">テキスト</a>のままでお願いします。 (自分でjsが書ければ解決しそうな気もしますが…残念ながらjsは借りてきたものです) サンプルでもう少し詳しく説明しています。 http://imaichie.web.fc2.com/sample.html

    • ベストアンサー
    • HTML
  • テキストエリアに画像URLを貼り付ける入力支援

    簡単なCGI日記を作成してますが、この入力フォームのテキストエリアに手動で画像URLのタグを入れるのが手間なので、 ↓ サーバーにある画像一覧が別窓(違うファイルから)で表示されていて(実際には画像表示ですが・・・) <a href="sample1.gif"><img src="sample1.gif"></a> <a href="sample2.gif"><img src="sample2.gif"></a> <a href="sample2.gif"><img src="sample2.gif"></a> ↓ 画像をクリックするとCGIのテキストエリア内に自動で <a href="sample1.gif"><img src="sample1.gif"></a>とタグを挿入するjavascriptってサンプルになるようなものはないでしょうか?

  • スワップイメージとロールオーバーの組み合わせで…

    上の画像をクリックした時に下の画像が切り替わるページを 作ったのですが、上の画像をmouseoverで切り替えるのではなく、 マウスを動かしてもクリックしたら下の画像と連動して上の画像も 切り替えることってできますか?? javascriptは初心者で、まったくわからずです(>-<) <SCRIPT LANGUAGE="JavaScript"> function doPic(imgName) { stepOn = ("" + imgName); document.step.src = stepOn; } </script> (中略) <a href="javascript:doPic('step1.gif');"><img src="img1.gif" name="img" border="0" onmouseover='this.src="r_img1.gif"' onmouseout='this.src="img1.gif"'></a> <a href="javascript:doPic('step2.gif');"><img src="img2.gif" name="img" border="0" onmouseover='this.src="r_img2.gif"' onmouseout='this.src="img2.gif"' ></a><br> <img name="step" src="step1.gif"> ↑こんな感じで作っております<(_ _)>

  • JavaScriptでの画像切り替えを複数セット

    JavaScript初心者です。 サムネイルに画像を合わせると、IDの付いた画像2枚とテキストの3箇所が同時に入れ替える、 というものを以下の方法で作成しました。 <script> function swap(n) { var items = [ { Text:"テキスト1", ImageB:"b/sample1.jpg", ImageA:"a/sample1.jpg" }, { Text:"テキスト2", ImageB:"b/sample2.jpg", ImageA:"a/sample2.jpg" }, { Text:"テキスト3", ImageB:"b/sample3.jpg", ImageA:"a/sample3.jpg" }, ]; var o = document.getElementById("photo"); document.getElementById("Txt").innerHTML = items[n].Text; document.getElementById("PhotoB").src = items[n].ImageB; document.getElementById("PhotoA").src = items[n].ImageA; } </script> <div id="photo"> <img src="sample1.jpg" alt="" name="PhotoB" id="PhotoB"> <img src="sample2.jpg" alt="" name="PhotoA" id="PhotoA"> <div id="Txt" name="Txt">説明文1</div> </div> <a href="#" onmouseover="swap(0)"><img src="sample1.jpg" /></a> <a href="#" onmouseover="swap(1)"><img src="sample2.jpg" /></a> <a href="#" onmouseover="swap(2)"><img src="sample3.jpg" /></a> このセットを同一ページで複数作成したいのですが、 IDを変えたセットを作ってもうまく動かず、困っております。 知識不足で申し訳ありませんが、この場合、どのような方法でしたら 複数の画像切り替えを作れるのでしょうか? よろしくお願い致します。

  • リンクをマウスオーバーでフェードイン・アウトがしたです。

    リンクをマウスオーバーでフェードイン・アウトがしたです。 以下のようなソースを書いたのですが、ページを開いた1回目のみ、画像と文字がフェードインして、以下のリンクをマウスオーバーした時には、普通に画像と文字が入れ替わります。リンクをマウスオーバーした時にもフェードイン・アウトさせるには、どのように変更すればいいのでしょうか? <html> <head> <script src="jquery.js" type="text/javascript"></script> <script type="text/javascript"> $(function() { $('div').fadeIn("slow"); }); </script> <head> <body> <div style="display:none;"> <img src="img/1.png" name="foo"> <br> <span id="buntate">眺める</span> </div> <a href="javascript:void(0)" onmouseover="document.foo.src='img/2.png';document.all.buntate.innerText='サーファー';" onmouseout="document.foo.src='img/1.png';document.all.buntate.innerText='眺める';"> hoge1</a> <br> <a href="javascript:void(0)" onmouseover="document.foo.src='img/3.png';document.all.buntate.innerText='海';" onmouseout="document.foo.src='img/1.png';document.all.buntate.innerText='眺める';"> hoge2</a> </body> </html> 沢山いろいろと試したのですが、自分で解決出来ず・・・ ごご教授、よろしくお願いいたします。

  • JavaScriptについての質問です。

    javascript初心者です。方法が分かりませんので、教えていただける方、お願いいたします。ホームページを作っております。とあるページの下の部分をクリックすると、新しいウィンドウが開きます。 <a href="#" onClick="window.open('f/f.html?1','newWin','width=850,height=650')">テキスト</a> 新しいページは次のようになっています。 ↓ここからJavaScript↓ flag = false; function pd1() { if(flag) document.getElementById('ID1').style.visibility = "hidden"; else document.getElementById('ID1').style.visibility = "visible"; flag = !flag; } function fx(){ var num = location.search.substr(1,1); var the_id = "ID" + num.toString(); document.getElementById(the_id).style.visibility = "visible"; } ここからhtml↓ <div id= "w1" onMouseover="document.s1img.src='img/s1rr.gif'" onMouseout="document.s1img.src='img/s1w.gif'"> <a href="javascript:pd1()">テキスト</a></div> <div id="ID1" style="visibility: hidden;" onMouseover="document.s1img.src='img/s1rr.gif'" onMouseout="document.s1img.src='img/s1w.gif'"> <p>テキスト<br /> </div> <div id="s1"><img src="img/s1w.gif" width="29" height="39" name="s1img"/></div> 以上です。上記に関して説明を付け加えますと、新しいウィンドウ(新しいページ)上では、function fx とpd1が作動し、div ID1がプルダウンメニューのように開くようになっています。 それに付け加えたいのですが、冒頭であげた部分をクリックするとID1がプルダウンのように開くだけでなく、div s1の name="s1img"であげた部分を別の画像が表示されるようにするにはどのようなjavascriptを追加すればいいでしょうか?   どなたか教えていただければ有り難いです・・・・・。

  • 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の画像を、という具合にです。  ←このあたりが分かりませんと書いたように、画像を別々に取得する方法が分かりません。 どのように改良すればいいでしょうか?もしくは全く新しいものに変える必要があるでしょうか? 分かる方、どなたか教えてください。よろしくお願いします。

  • マウスオーバーで画像の入れ替え

    以下のソースでマウスオーバー時に画像の入れ替えをしたいのですが、IE6では動作するのですが、firefoxでは動作しません。 firefoxでも動くようにするにはどうしたらいいですか? アドバイスよろしくお願いいたします。 <html> <head> <script language="JavaScript"> <!-- // タイマー変数の初期化 timer = ""; // スワップイメージ function SwapImage(img) { obj = document.getElementById("image"); obj.src = img; clearTimeout(timer); timer=setTimeout('DefaultImage()',5000); } // イメージ画像の初期化 function DefaultImage() { obj = document.getElementById("image"); obj.src = 'img/default.gif'; clearTimeout(timer); } //--> </script> </head> <body> <div class="btn"><a href="#"><img src="img/sample1.jpg" onmouseover="SwapImage('img/test01.jpg')" width="100" height="50" border="0" /></a></div> <div class="btn"><a href="#"><img src="img/sample2.jpg" onmouseover="SwapImage('img/test02.jpg')" width="100" height="50" border="0" /></a></div> <div class="btn"><a href="#"><img src="img/sample3.jpg" onmouseover="SwapImage('img/test03.jpg')" width="100" height="50" border="0" /></a></div> <div id="photo"><img src="img/default.gif" name="image" width="300px" height="150px"></div> </body> </html>

  • どういうわけかリンクしません

    どういうわけかリンクしません ので、教えていただきたくて質問させていただきます。 数ページあるサイトを製作したのですが、 ページ内にメニューボタンを配置し、 それぞれサイト内のリンク先に飛ぶように設定しました。 その内のボタン(sample_btn)にトップページ(index.html)自身に再ジャンプするようなかたちをとろうと思い、 <div id="sample_btn"><a href="index.html"><img src="sample.gif" /></a></div> 上記のxhtmlを書きました。 ところがローカルでは、sample.gifという画像が見えるのですが サーバーにアップすると見えなくなってしまいます。 他のページでは、 <div id="sample_btn"><a href="index.html"><img src="sample.gif" /></a></div> の、index.htmlの部分の名前だけを変えて使用していますが、 問題なく表示されています。 表示されないトップページでも、index.htmlの部分を#に変えると表示されます。 現在は#で問題を回避していますが、 どうにかリンクさせたいというのと、 なぜこうなるのか知りたくて質問させていただきました。 質問に関し情報が少ない場合は指摘がございましたら 追記させていただきます。 リンクする必要が無いかとは思いますが、 今回はどうしてかを知りたい為 どうかご回答よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 指定時間ごとに画像とリンク先を変えるには?

    バナーが指定時間ごとに変わるページを 作りたいと思っているのですが 下記のソースではどうもうまくいきません。 <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-sjis"> <TITLE>指定時間毎に画像とリンク先を変えるには?</TITLE> </HEAD> <BODY BGCOLOR="#ffffff" onLoad="banner()"> <SCRIPT language="JavaScript"> <!-- num=1; function banner(){ if(num==1){ document.photo.src="img/no_0.gif", document.photo.href= "http://www.test.co.jp/0"; num=2; }else if(num==2){ document.photo.src="img/no_1.gif", document.photo.href= "http://www.test.co.jp/1"; num=3; }else if(num==3){ document.photo.src="img/no_2.gif", document.photo.href= "http://www.test.co.jp/2"; num=4; }else if(num==4){ document.photo.src="img/no_3.gif", document.photo.href= "http://www.test.co.jp/3"; num=5; }else if(num==5){ document.photo.src="img/no_4.gif", document.photo.href= "http://www.test.co.jp/4"; num=6; }else if(num==6){ document.photo.src="img/no_5.gif", document.photo.href= "http://www.test.co.jp/5"; num=1; } setTimeout("banner()",5000); } //--> </SCRIPT> <a href="http://www.test.co.jp/ng" NAME="photo"><IMG SRC="img/1.jpg" NAME="photo" ALIGN="BOTTOM" WIDTH="60" HEIGHT="110" BORDER="0"></a> </BODY> </HTML> 画像は変わるのですがリンク先が変わらないようで…。 どなたかご指示をいただけないでしょうか?