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

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

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

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

JavaScript

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

Q&A

解決済

1回答

1190閲覧

【Javascript】 複数のチェックボックスをチェックした際に、すべてをHTML上で表示したい。

yujin1202

総合スコア56

HTML5

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

JavaScript

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

0グッド

0クリップ

投稿2021/05/17 03:13

編集2021/05/17 06:21

HTMLと言うか、Javascriptの方の問題の様な気がするのですが、教えてください。
下記の様なUIを作成しております。

イメージ説明

ユーザーが希望国をチェックすると、下に表示されると言う単純なUIです。
しかしながら、一番下に記載してあるFranceしか反応しません。
つまり、Afgnistan、England、Franceとチェックが入っていても、Franceしか表示されません。
一方、Franceにチェックが入っていないと、他の国にチェックが入っていても表示されません。("no"とだけ表示されます。)

イメージ説明

この例では、下記の様に表示したいと思っております。
=====

Afgahanistan
no
England
France

=======

コードは下記になります。
恐らく、チェックボックスの個数を拾って、For文で回すとかなのでしょうが、どうしても上手くいきません。
教えて頂きたく。

<!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>test</title> </head> <body> <h1>Test</h1> <p>Where do you want to go ???</p> <form action="/" method="POST" enctype="multipart/form-data"> <div> <p>Select at least one(1) country.</p> </div> <br> <div> <label for="ck1">Afgahanistan:</label> <input type="checkbox" id="ck1" name="checkbox" value="Afgahanistan"> </div> <div> <label for="ck2">Australia:</label> <input type="checkbox" id="ck2" name="checkbox" value="Australia"> </div> <div> <label for="ck3">England:</label> <input type="checkbox" id="ck3" name="checkbox" value="England"> </div> <div> <label for="ck4">France:</label> <input type="checkbox" id="ck4" name="checkbox" value="France"> </div> </form> <p id="msg"></p> <script> function valueChange(){ if (ck1.checked){ msg.innerText='afganistan'; }else{ msg.innerText='no'; } if (ck2.checked){ msg.innerText='Australia'; }else{ msg.innerText='no'; } if (ck3.checked){ msg.innerText='England'; }else{ msg.innerText='no'; } if (ck4.checked){ msg.innerText='France'; }else{ msg.innerText='no'; } } let ck1= document.getElementById('ck1'); ck1.addEventListener('change',valueChange); let ck2= document.getElementById('ck2'); ck2.addEventListener('change',valueChange); let ck3= document.getElementById('ck3'); ck3.addEventListener('change',valueChange); let ck4= document.getElementById('ck4'); ck4.addEventListener('change',valueChange); let msg = document.getElementById('msg'); </script> </body> </html> コード

<後記> 
Yambejp さん、ありがとうございました。
一発で解決しました。
下記に最終コードを記載しておきます。
尚、チェックボックスで選択しない場合は、"no"ではなく、空白("")とする事にしました。

<!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>test</title> </head> <body> <h1>Test</h1> <p>Where do you want to go ???</p> <form action="/" method="POST" enctype="multipart/form-data"> <div> <p>Select at least one(1) country.</p> </div> <br> <div> <label for="ck1">Afgahanistan:</label> <input type="checkbox" id="ck1" name="checkbox" value="Afgahanistan"> </div> <div> <label for="ck2">Australia:</label> <input type="checkbox" id="ck2" name="checkbox" value="Australia"> </div> <div> <label for="ck3">England:</label> <input type="checkbox" id="ck3" name="checkbox" value="England"> </div> <div> <label for="ck4">France:</label> <input type="checkbox" id="ck4" name="checkbox" value="France"> </div> <div> <input type="submit" value="SEND"> </div> </form> <br> <br> <p> Your selected countries are belows.</p> <p> ↓ ↓ ↓</p> <p id="msg"></p> <script> function valueChange(){ let res=[]; res.push(ck1.checked?'afganistan':''); res.push(ck2.checked?'Australia':''); res.push(ck3.checked?'England':''); res.push(ck4.checked?'France':''); msg.innerHTML=res.join("<br>"); } let ck1= document.getElementById('ck1'); ck1.addEventListener('change',valueChange); let ck2= document.getElementById('ck2'); ck2.addEventListener('change',valueChange); let ck3= document.getElementById('ck3'); ck3.addEventListener('change',valueChange); let ck4= document.getElementById('ck4'); ck4.addEventListener('change',valueChange); let msg = document.getElementById('msg'); </script> </body> </html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

javascript

1function valueChange(){ 2 let res=[]; 3 res.push(ck1.checked?'afganistan':'no'); 4 res.push(ck2.checked?'Australia':'no'); 5 res.push(ck3.checked?'England':'no'); 6 res.push(ck4.checked?'France':'no'); 7 msg.innerHTML=res.join("<br>"); 8}

投稿2021/05/17 03:51

yambejp

総合スコア114839

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

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

yujin1202

2021/05/17 06:20

ありがとうございました。 一発で解決しました。 配列を初期化して、そこにpushして、join("<br>")で改行するのですね。 非常に明確です。勿論、ベストアンサーとさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問