質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

button

HTMLで用いる<button>タグです。

ラジオボタン

ラジオボタンはフォームに使われる要素のひとつであり、ユーザに限られた選択肢からひとつの答えを選んでもらうというものです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

1445閲覧

ラジオボタンの選択状況(組み合わせ)によって特定の画像を表示させたい場合。

_Lucia

総合スコア27

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

button

HTMLで用いる<button>タグです。

ラジオボタン

ラジオボタンはフォームに使われる要素のひとつであり、ユーザに限られた選択肢からひとつの答えを選んでもらうというものです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/07/30 04:57

編集2018/07/30 06:53

前提・実現したいこと

※4つのラジオボタンが用意されていることを前提に質問したいと思います。(html上です)
※それぞれのラジオボタンを「A」「B」「1」「2」と呼ぶことにします。
※AとBのnameは「ei」として、1と2のnameは「suu」としましょう。
※ちなみに、「A」と「1」は最初から選択されているということで。

では質問ですが、

最初の状態だとAと1が選択されていますよね。この状態では画像ファイル「A1.png」が表示されています。
次に、Aを選択している状態でラジオボタンの「2」を選択します。
この場合、画像ファイル「A2.png」が表示され、先ほど表示されていた「A1.png」と入れ替わります。
Bが選択されている場合も同じです。1が選択されたら~を、2が選択されたら~をという感じです。

※ここでのポイントは、1と2のボタンは印のようなものであり、実際プログラムが起動しているボタンは「A」と「B」と言うことです。
ボタン「A」や「B」は、ボタン「1」が選択されているか「2」が選択されているかを判断し、それによって違う結果を返しています。
そして大事な事は、選択肢が選択「されているか」であって、選択「したか」ではありません。選択した瞬間だけでなく、今は選択されている状態だとプログラムが認識する必要があります。

このような仕組みを作りたいのですが、jsだと、どのようなソースコードになるでしょうか?
下記の様にプログラムを書いてみたのですが、画像は切り替わりませんでした。

試したこと

<!--htmlです--> 画像が表示される場所になります。↓ <img src="A1.png" name="wear"> <!--ラジオボタンの「A」と「B」です--> <input type="radio" name="ei" onClick="changeA();" checked> <input type="radio" name="ei" onClick="changeB();"> </p> <!--ラジオボタンの「1」と「2」です--> <input type="radio" name="suu" checked> <input type="radio" name="suu"> <!--ここからjsプログラムです--> <SCRIPT type="text/javascript"> <!-- <!--ボタンAの動作です--> function changeA(){ if(document.suu.element[0].checked){ document.wear.src = "A1.png"; } if(document.suu.element[1].checked){ document.wear.src = "A2.png"; } } <!--ボタンBの動作です--> function changeB(){ if(document.suu.element[0].checked){ document.wear.src = "B1.png"; } if(document.suu.element[1].checked){ document.wear.src = "B2.png"; } } --> </SCRIPT>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

i_sugiyama_tomo

2018/07/30 05:22

動作させるところの関数名が「cangeA」「cangeB」になってるんですけど「changeA」「changeB」に直したらどうなります?
_Lucia

2018/07/30 05:30

すみませんでした。これはミスです。直しましたがプログラムは動きませんでした。
kei344

2018/07/30 06:19 編集

質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
_Lucia

2018/07/30 06:55

コードを囲みました。なんだか引き締まった感じに表示されますね。
guest

回答3

0

ベストアンサー

こんな感じですかね

javascript

1<script> 2window.addEventListener('DOMContentLoaded', function(e){ 3 [].forEach.call(document.querySelectorAll('[name=ei],[name=suu]'),function(x){ 4 x.addEventListener('change',function(e){ 5 var v1=document.querySelector('[name=ei]:checked').value; 6 var v2=document.querySelector('[name=suu]:checked').value 7 document.querySelector('#wear').src=v1+v2+".png"; 8 }); 9 }); 10}); 11 12</script> 13 14<img src="A1.png" name="wear" id="wear"> 15<label><input type="radio" name="ei" value="A" checked>A</label> 16<label><input type="radio" name="ei" value="B">B</label> 17<label><input type="radio" name="suu" value="1" checked>1</label> 18<label><input type="radio" name="suu" value="2">2</label>

投稿2018/07/30 06:25

yambejp

総合スコア114968

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_Lucia

2018/07/30 07:18

要点を把握した最適なコードですね。 シンプルで短くても、ちゃんと実装できていました。 ifを使わず出来たなんてすごいです。 ありがたく参考にさせていただきますね。 この度はコードを書いてくださってありがとうございました。
guest

0

プログラムの基本的にいっぱい間違いがあるので一つ一つ解説しますね。

  1. まず関数は先に定義すること。なのでこの場合はJavaScriptを上に書いてください(phaze01)
  2. 次にラジオボタンを押すたびに変更するのであればすべてのラジオボタンに動きの引き金となる「onClick=」をつけてください。このときJSのプログラムで分岐させて記載するので一つの関数で処理します。なので関数名は同じにします(phaze02)
  3. JSプログラムを書く場合、変更するものを予め変数に呼び出しておく必要があります。(phaze03)
  4. まずei[0]がcheckedかで分岐させてsuu[0]がcheckedか確認してあたってればsrcを変えます。その次にsuu[1]を確認します。ei[0]がcheckedでなければei[1]がcheckedか確認してsuu[0]がcheckedか確認します。(phaze04)

とこれくらい手直しが必要だったので、もう少し文献を読んで工夫できると良かったと思います。

html

1<!--ここからjsプログラムです--> 2<!--phaze01--> 3<SCRIPT type="text/javascript"> 4<!-- 5function changeImg(){ 6var ei = document.getElementsByName("ei");//phaze03 7var suu = document.getElementsByName("suu");//phaze03 8 //phaze04 9 if(ei[0].checked){ 10 if(suu[0].checked){ 11 document.wear.src = "A1.png"; 12 }else{ 13 document.wear.src = "A2.png"; 14 } 15 }else{ 16 if(suu[1].checked){ 17 document.wear.src = "B1.png"; 18 }else{ 19 document.wear.src = "B2.png"; 20 } 21 } 22} 23--> 24</SCRIPT> 25画像が表示される場所になります。↓ 26<p><img src="A1.png" name="wear"></p> 27 28<!--ラジオボタンの「A」と「B」です--> 29<p> 30<label>A<input type="radio" name="ei" onClick="changeImg();" checked></label><!--phaze02--> 31<label>B<input type="radio" name="ei" onClick="changeImg();"></label><!--phaze02--> 32</p> 33<!--ラジオボタンの「1」と「2」です--> 34<p> 35<label>1<input type="radio" name="suu" onClick="changeImg();" checked></label><!--phaze02--> 36<label>2<input type="radio" name="suu" onClick="changeImg();"></label><!--phaze02--> 37</p>

投稿2018/07/30 06:17

編集2018/07/30 06:35
i_sugiyama_tomo

総合スコア85

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_Lucia

2018/07/30 07:03

お答えに感謝致します。 私の盲点が多いせいか間違いだらけでしたね。 親切な説明でわかりやすかったです。 この度はコードを書いてくださってありがとうございました。
guest

0

ラジオボタンの要素を取得するところが間違っていると思います。
inputタグをformタグで囲ってから”document.form名.input名”で取るのがわかりやすいかと

javascript

1 <form name="form2"> 2 <input type="radio" name="suu" checked> 3 <input type="radio" name="suu"> 4 </form> 5 6 function changeA() { 7 if (document.form2.suu[0].checked) { 8 } 9 if (document.form2.suu[1].checked) { 10 } 11 }

投稿2018/07/30 06:04

aruto

総合スコア175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_Lucia

2018/07/30 06:16 編集

試してみましたが画像は切り替わっていません。 私が書いたプログラムが根本的に間違っている可能性も十分ありますので。 お答えいただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問