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

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

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

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

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

2回答

747閲覧

Monacaでチェックボックス・ラジオボックスが重複カウントされてしまう

kamijyo

総合スコア10

JavaScript

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

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

0クリップ

投稿2019/07/25 10:10

編集2019/07/25 10:23

前提・実現したいこと

Monacaでアンケートアプリを作りたいと思っています。

発生している問題・エラーメッセージ

チェックボックスやラジオボックスが重複してカウントしてしまい
2回ずつ結果が取得されてしまいます。

該当のソースコード

html

1<ons-list-item tappable> 2 <ons-row> 3 <ons-col><label>リンゴ</label></ons-col> 4 <ons-col><label><ons-checkbox name="リンゴ" value="大好き" input-id="ringo-1"></ons-checkbox></label></ons-col> 5 <ons-col><label><ons-checkbox name="リンゴ" value="好き" input-id="ringo-2"></ons-checkbox></label></ons-col> 6 <ons-col><label><ons-checkbox name="リンゴ" value="普通" input-id="ringo-3"></ons-checkbox></label></ons-col> 7 <ons-col><label><ons-checkbox name="リンゴ" value="嫌い" input-id="ringo-4"></ons-checkbox></label></ons-col> 8 <ons-col><label><ons-checkbox name="リンゴ" value="大嫌い" input-id="ringo-5"></ons-checkbox></label></ons-col> 9 <ons-col><label><ons-checkbox name="リンゴ" value="無関心" input-id="ringo-6"></ons-checkbox></label></ons-col> 10 <ons-col><label><ons-checkbox name="リンゴ" value="無知" input-id="ringo-7"></ons-checkbox></label></ons-col> 11 </ons-row> 12</ons-list-item>

このようなリストに対して

JS

1var _checkbox = document.getElementsByName('リンゴ'); 2for(var j = 0; j < _checkbox.length; j++) { 3 if(_checkbox[j].checked && _checkbox[i].tagName) { 4 console.log('_checkbox[' + j + '].valueは' + _checkbox[j].value); 5 } 6}

このようにするとチェックボックスが2つずつカウントされてしまいます。
どの部分に間違いがあるのでしょうか?

全部チェックした場合

log

1_checkbox[0]は大好き 2_checkbox[1]は大好き 3_checkbox[2]は好き 4_checkbox[3]は好き 5. 6. 7.

試したこと

forの増分を2にすることで対処していますが
そもそもなぜ2回ずつカウントされるのかがわからず
モヤモヤしています。

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

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

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

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

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

yambejp

2019/07/25 10:19

javascriptの検証でしたら htmlとして提示されたほうがよろしいかと
guest

回答2

0

ベストアンサー

monacaで質問にあるコードを再現してみました。
開発者モードでHTMLを見てみたところ、ons-checkboxタグの中にinputタグが追加されておりinputタグにもname="リンゴ"がついていました。重複してしまう原因はこれですね。
イメージ説明

nameではなくclassにしたところうまく動いたのでclassをつけてみてはどうですか?

投稿2019/07/25 11:39

mistn

総合スコア1191

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

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

0

ちょっと再現できる環境がないのですが

javascript

1<script> 2window.addEventListener('DOMContentLoaded', function(e){ 3 [].forEach.call(document.querySelectorAll('[name=リンゴ]'),x=>{ 4 x.addEventListener('change',()=>{ 5 [].forEach.call(document.querySelectorAll('[name=リンゴ]:checked'),(x,y)=>{ 6 console.log('_checkbox[' + y + '].valueは' + x.value); 7 }); 8 }); 9 }); 10}); 11</script> 12<label><input type="checkbox" name="リンゴ" value="大好き" checked>大好き</label><br> 13<label><input type="checkbox" name="リンゴ" value="好き" checked>好き</label><br> 14<label><input type="checkbox" name="リンゴ" value="普通" >普通</label><br> 15<label><input type="checkbox" name="リンゴ" value="嫌い" >嫌い</label><br> 16<label><input type="checkbox" name="リンゴ" value="大嫌い" >大嫌い</label><br> 17<label><input type="checkbox" name="リンゴ" value="無関心" >無関心</label><br> 18<label><input type="checkbox" name="リンゴ" value="無知" >無知</label><br>

投稿2019/07/25 10:36

yambejp

総合スコア114839

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問