
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>
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で実行するように変更。
この回答への補足
ありがとうございます。早速やってみました。
ローカルではうまくいったのですが、アップロードすると、なぜかIE(バージョンは6を使用しています)で「ページ3+4」をクリックすると画像が表示されません。
画像表示エリアを右クリックで「show picture」をクリックすると画像が表示されるので、コードの問題ではなくブラウザの設定の問題なのかなと思いますが、「show pictures」もチェックが入っていましたし、セキュリティをデフォルトにしたりしたのですが、表示されません。
デフォルトの設定で表示されたほうがいいので、なにかアドバイスがありましたら、よろしくお願いします。
とりあえず教えていただきました
-- 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>
の方法を利用しようと思います。
これならリンクはついたままですが、画像が表示されないことはないので。
せっかくいい方法を教えていただいたのに、あきらめるようで残念ですが、かなり勉強になりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jQueryで特定id以外の下にある...
-
折りたたみタグ 他を閉じる(...
-
ラジオボタンの切替で表示する...
-
xmlの同一要素名を配列に入れる...
-
JQueryタブの切替 タブからタ...
-
innerHTMLに入れたリンクが反応...
-
displayの状態を取得したい
-
document.all.id1.innerText="ok";
-
JavaScript オンマウスで画像...
-
複数のリンク画像を一定時間で...
-
10秒後に1秒ごとに1行づつ表示...
-
[急ぎ] videoタグで埋め込んだm...
-
読み込んだQRコードをフォーム...
-
クリックすると隠れたテキスト...
-
jqueryを使って無駄なspanタグ...
-
JavascriptでDIV~DIVをリロードで
-
クリックで特定のdiv要素が表示...
-
MAX関数を使ってからLEFT JOIN...
-
classList で、class名が付かな...
-
lightbox 誤作動 JAVA
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
javascriptテキストBOX色を元に...
-
読み込んだQRコードをフォーム...
-
指定したパスが現URLに含まれて...
-
removeEventListenerについて
-
iframe内のリンクが飛ばないの...
-
createElementで作成した要素を...
-
IFRAMEの表示/非表示を切り替え...
-
jQueryで同じ要素の先頭へ親要...
-
ページ読み込み完了の3秒後にリ...
-
jQueryで特定id以外の下にある...
-
jQueryで同じid属性が複数あっ...
-
表示・非表示のスクリプトで、...
-
jQueryでシンプルドラッグドロ...
-
Gif画像のアニメーションが再生...
-
【HP作成】クリックすると下...
-
クリックすると下に説明文が出...
-
背景色を透明化
-
プルダウンとチェックボックス...
-
javascriptでpostした値が取得...
おすすめ情報