- ベストアンサー
JavaScriptでボタンをクリックすると画像が変わる設定をするには?
たとえば、1.gif - 2.gif , 3.gif - 4.gif,5.gif - 6.gif,7.gif - 8.gif,9.gif - 10.gif の画像をついにしてボタンとして利用するとします。 最初に表示されるボタンは 1.gif , 3.gif ,5.gif , 7.gif , 9.gif の5つです。 JavaScriptで1.gifボタンをクリックしたら、2.gifボタンに画像が変わり、 3.gifボタンをクリックしたら、4.gifボタンに画像が変わるように(残りの画像も同様)したいと 考えています。この時、1.gif , 3.gif ,5.gif , 7.gif , 9.gifのいずれかのボタンがクリックされた 時点で、直前に変更していた 2.gif , 4.gif ,6.gif , 8.gif , 10.gifのいずれかのボタンは最初のボタン の状態に戻したいと考えています。 どのようにJavaScriptを記述すると可能なのでしょうか。 1つのボタンをクリックすると別の画像に変わる方法は色々なHPを参考に↓の記述でなんとかできたのですが、 複数のボタンになるとどのように修正していけばうまくいくのかわかりません。 <HTML> <HEAD> <TITLE></TITLE> <SCRIPT language="JavaScript"> <!-- imgnum=1; function changeImage(){ if(imgnum==1){ document.myimg.src="2.gif"; imgnum=2; }else if(imgnum==2){ document.myimg.src="1.gif"; imgnum=1; } } // --> </SCRIPT> </HEAD> <BODY> <CENTER> <A href="javascript:changeImage()"><IMG src="1.gif" name="myimg" border=0></A> </CENTER> </BODY> </HTML> 質問がややこしくてすみません。 方法をお分かりの方はどなたか教えてください。よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでしょうかね。 <html> <head> <title></title> <script language="JavaScript"> <!-- var img = new Array( "1.gif","2.gif", "3.gif","4.gif", "5.gif","6.gif", "7.gif","8.gif", "9.gif","10.gif"); function changeImage(id){ var btn = new Array( document.btn0, document.btn1, document.btn2, document.btn3, document.btn4); for (i = 0; i < 5; i++) { if (id == i) { btn[i].src = img[i * 2 + 1]; } else { btn[i].src = img[i * 2]; } } } //--> </script> </head> <body> <a href="JavaScript:changeImage(0)"><img src="1.gif" name="btn0" border="0"></a> <a href="JavaScript:changeImage(1)"><img src="3.gif" name="btn1" border="0"></a> <a href="JavaScript:changeImage(2)"><img src="5.gif" name="btn2" border="0"></a> <a href="JavaScript:changeImage(3)"><img src="7.gif" name="btn3" border="0"></a> <a href="JavaScript:changeImage(4)"><img src="9.gif" name="btn4" border="0"></a> </body> </html>
その他の回答 (4)
- ittochan
- ベストアンサー率64% (2667/4137)
補足です。 スクリプトコンポーネントファイル(ChangeImg.htc)は、 ANo.#2で書いたそのままで保存します。 ---この下から--- <script language="jscript"> attachEvent("onclick", event_onclick); function event_onclick() { var a; a = src; src = value; value = a; } </script> ---この上まで--- ><head></head>の間でよかったのでしょうか? 他のタグは不要ですよ。
- ittochan
- ベストアンサー率64% (2667/4137)
>スクリプトコンポーネントの入力位置は ><head></head>の間でよかったのでしょうか? いやいや、別ファイルですよ。 他のページからも流用できるようにコンポーネント化する方法です。 <STYLE> .ChangeImg{behavior:url(ChangeImg.htc);} </STYLE> って記述があるでしょ? これは classにChangeImgとあるエレメント内では、 スクリプトコンポーネントファイルの ChangeImg.htcを使ってね。と言う意味です。 ですから、 ChangeImg.htcファイルとして保存してね。
- ittochan
- ベストアンサー率64% (2667/4137)
IE限定で htmファイルは <HTML> <head> <TITLE></TITLE> <STYLE> .ChangeImg{behavior:url(ChangeImg.htc);} </STYLE> </head> </HEAD> <BODY> <P> <IMG class=ChangeImg src="1.gif" value="2.gif"> <IMG class=ChangeImg src="3.gif" value="4.gif"> <IMG class=ChangeImg src="5.gif" value="6.gif"> <IMG class=ChangeImg src="7.gif" value="8.gif"> <IMG class=ChangeImg src="9.gif" value="10.gif"> /P> </BODY> </HTML> スクリプトコンポーネント(ChangeImg.htc)は <script language="jscript"> attachEvent("onclick", event_onclick); function event_onclick() { var a; a = src; src = value; value = a; } </script> こんな感じになります。
お礼
スクリプトコンポーネントは別ファイルにするということだったのですね。素人な質問に親切にお答え頂きありがとうございました。とても勉強になりました。今後もよろしくお願いします。
補足
ご回答頂きありがとうございます。上記の方法を試してみたのですが、ボタンをクリックしても何も変化がありませんでした。初心者なので、基礎的なことを聞くようなのですが、スクリプトコンポーネントの入力位置は<head></head>の間でよかったのでしょうか?
- ittochan
- ベストアンサー率64% (2667/4137)
こんな感じはどうですか? <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <TITLE></TITLE> <SCRIPT LANGUAGE=javascript> <!-- function ig1_onclick() { if (ig1.src=="img2.gif") { ig1.src="img1.gif"; } else { ig1.src="img2.gif"; } } function ig2_onclick() { if (ig2.src=="img3.gif") { ig1.src="img4.gif"; } else { ig1.src="img3.gif"; } } function ig3_onclick() { if (ig3.src=="img5.gif") { ig1.src="img6.gif"; } else { ig1.src="img5.gif"; } } function ig4_onclick() { if (ig4.src=="img7.gif") { ig1.src="img8.gif"; } else { ig1.src="img7.gif"; } } //--> </SCRIPT> </HEAD> <BODY> <P> <IMG id=ig1 src="img1.gif" LANGUAGE=javascript onclick="return ig1_onclick()"> <IMG id=ig2 src="img3.gif" LANGUAGE=javascript onclick="return ig2_onclick()"> <IMG id=ig3 src="img5.gif" LANGUAGE=javascript onclick="return ig3_onclick()"> <IMG id=ig4 src="img7.gif" LANGUAGE=javascript onclick="return ig4_onclick()"> </P> </BODY> </HTML>
補足
ご回答頂きましてありがとうございます。上記の方法をそのままコピーして試して見たのですが、私のやり方が悪いのか、1をクリックしたら2には変わるのですが、3をクリックすると4に、5をクリックすると6に、7をクリックすると8に変わらず、3をクリックすると1のボタン部分が3に変わったり、5をクリックすると1のボタン部分が5に変わったり、7をクリックすると1のボタン部分が7に変わったりしてしまい、イメージどおりにならなかったのですが、私のやり方がどこかまずかったのでしょうか?
お礼
イメージどおりに作ることができました。ありがとうございました。ボタンをクリックすることで別ページにリンクさせることも、色々試していると何とか解決ができました。今後もよろしくお願いします。
補足
イメージどおりに作ることができて本当に助かりました。実は、左右に区切られたフレームページの左側にこのボタンがあり、ボタンをクリックすると、右側に指定したHTMLファイルを表示させようと思っているのですが、上記のようにボタンを設定した上に、さらにファイルも開く設定をするのは可能なのでしょうか?<a href=~>の前に<A onClick="**.htm" target="main" style = "cursor : pointer>と記述してみるとうまくいくかと試してみたところ、ファイルが開かなかったのですが何が悪いのか原因がお分かりでありましたら、教えて頂けないでしょうか?補足として質問を追加して申し訳ありませんが、よろしくお願いします。