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

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

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

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

Q&A

解決済

1回答

1733閲覧

ラジオボタンの選択で表示/非表示を切り替えるフォームを1ページに複数設置したい

fujii0411

総合スコア9

JavaScript

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

0グッド

0クリップ

投稿2018/04/12 01:19

はじめまして。どうぞよろしくお願いします。

以下のような、フォームのラジオボタンにチェックを入れることで
要素の表示/非表示を切り替えるスクリプトを1ページ内に複数
設置したいのですが、可能でしょうか?

JavaScript

1<script type="text/javascript"> 2function jsselect1(){ 3radio = document.getElementsByName('selectbox') 4if(radio[0].checked) { 5 6document.getElementById('box01').style.display = ""; 7document.getElementById('box02').style.display = "none"; 8}else if(radio[1].checked) { 9 10document.getElementById('box01').style.display = "none"; 11document.getElementById('box02').style.display = ""; 12} 13} 14 15window.onload = jsselect1; 16</script>

HTML

1<ul> 2<li><label><input type="radio" name="selectbox" value="選択肢1" onclick="jsselect1();" checked="checked" />選択肢1</label></li> 3<li><label><input type="radio" name="selectbox" value="選択肢2" onclick="jsselect1();" />選択肢2</label></li> 4</ul> 5 6<div id="box01"> 7選択肢1の内容 8</div> 9 10<div id="box02"> 11選択肢2の内容 12</div>

1つのページにこのようなフォームを3つ、
1つのフォームにつき【選択肢1】【選択肢2】があり
いずれも【選択肢1】が表示されている状態になるのが望ましいです。
初心者のため質問の仕方にも満足でない部分もあるかと存じますが
どうぞよろしくお願いいたします。

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

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

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

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

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

yambejp

2018/04/12 01:30

「1つのページにこのようなフォームを3つ」とありますが、フォーム同士が連動する必要はなくそれぞれのフォームが別々の場所のエリアの表示を切り替えるということでよろしいですね?
kei344

2018/04/12 01:32

ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
fujii0411

2018/04/13 01:37

すみません、どこが詰まっているのか、上記の質問以外に表現できませんでした…以後は気を付けます。
guest

回答1

0

ベストアンサー

たとえばこんな感じ

javascript

1HTMLElement.prototype.trigger=function(eventStr){ 2 if (document.createEvent) { 3 var e = document.createEvent("HTMLEvents"); 4 e.initEvent(eventStr, true, true ); 5 return this.dispatchEvent(e); 6 } else { 7 var e = document.createEventObject(); 8 return this.fireEvent("on"+eventStr, e); 9 } 10}; 11window.addEventListener('DOMContentLoaded', function(e){ 12 Array.prototype.forEach.call(document.querySelectorAll('[data-target]'),function(x){ 13 x.addEventListener('change',function(e){ 14 Array.prototype.forEach.call(document.querySelectorAll('[name='+e.target.getAttribute("name")+']'),function(y){ 15 document.querySelector('#'+y.getAttribute('data-target')).style.display=(y.checked?"block":"none"); 16 }); 17 }); 18 x.trigger("change"); 19 }); 20});

HTML

1<label><input type="radio" name="r1" value="選択肢1" data-target="box01" checked>選択肢1</label> 2<label><input type="radio" name="r1" value="選択肢2" data-target="box02">選択肢2</label><br> 3<div id="box01">選択肢1の内容</div> 4<div id="box02">選択肢2の内容</div> 5<hr> 6<label><input type="radio" name="r2" value="選択肢1" data-target="box03" checked>選択肢1</label> 7<label><input type="radio" name="r2" value="選択肢2" data-target="box04">選択肢2</label><br> 8<div id="box03">選択肢1の内容</div> 9<div id="box04">選択肢2の内容</div> 10<hr> 11<label><input type="radio" name="r3" value="選択肢1" data-target="box05" checked>選択肢1</label> 12<label><input type="radio" name="r3" value="選択肢2" data-target="box06">選択肢2</label><br> 13<div id="box05">選択肢1の内容</div> 14<div id="box06">選択肢2の内容</div>

投稿2018/04/12 01:47

yambejp

総合スコア114839

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

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

fujii0411

2018/04/13 01:36

ありがとうございます!理想通りの動きです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問