- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:formの配列をjsでカウントしたい)
JavaScriptでformの配列をカウントする方法
このQ&Aのポイント
- JavaScriptを使用して、form内の配列をカウントする方法を知りたいです。具体的には、チェックボックスがチェックされた項目のみをカウントし、その件数をポップアップで表示したいと考えています。
- 現在のコードでは、document.MyForm.array.valueのように配列の値を取得しようとしていますが、正常に動作しません。document.form1.elements[i]やdocument.forms['MyForm'].elements['str[1]'].valueなどの書き方も試しましたが、undefinedとなってしまいます。PHP側のコードを変更したくないため、name属性は変更したくありません。どのようにすればチェックされた項目のみをカウントできるでしょうか?
- 質問:JavaScriptを使用して、フォーム内のチェックボックス配列のカウント方法について教えてください。チェックされた項目のみをカウントし、ポップアップでカウント数を表示したいと考えています。配列の値を取得するために試したコードはうまく動作せず、name属性の変更は避けたいと思っています。解決策はありますか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>document.MyForm.array.value <-普通のテキストならこう書きますが、 これはあまり普通ではなく最近は推奨されていない方法です。 (たぶんformに名前をつけて管理したいのでしょうけど) そもそもチェックされているデータの数をカウントするのですから valueは関係ないですね。 こんな風にしてみてはどうでしょう? なお、サブミット時の警告ということでconfirmにしておきましたがalertでやっても問題ないです <script> function check(f){ var count=0; for(var i=0;i<f.length;i++){ if(f[i].name=="array[]" && f[i].checked) count++; } var flg=confirm(count.toString()+"件チェックされました"); return flg; } </script> <form onsubmit="return check(this)"> <p> <input type="checkbox" name="array[]" value="11111" />チェック1 <input type="checkbox" name="array[]" value="22222" />チェック2 <input type="checkbox" name="array[]" value="33333" />チェック3 <input type="submit" val="go" /> </p> </form>
お礼
回答ありがとうございます。 見事にできました。 今までJSにはあまり触らなかったので、よくわかりませんでしたが、 document~がもう推奨されていないとはショックです(笑)