【javascript】チェックボックスが複数ある場合の値取得について
こんにちは。
チェックボックスのグループが複数ある場合に、値取得のロジックをチェックボックスのグループ毎に記述せず、
まとめて1つのロジックで取得できる記述方法はありますでしょうか?
色々と検索しましたが、解決できず何かよい方法があれば教えて頂けないでしょうか。
よろしくお願い致します。
■やりたいこと
・チェックボックスの値取得の記述を1つにまとめたい。
サンプルソースでは、チェックボックスのグループが3つで、チェックボックスの値取得のソースも3つ記述しています。
チェックボックスのグループを50個設置すると、50回値取得のソースを記述することになってしまうので、1つの記述にまとめたいです。
■サンプルソース
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<script src="jquery.js"></script>
<style type="text/css">
table {border: solid;}
td{width:150px;}
</style>
<script type="text/javascript" language="JavaScript"><!--
function setVal(obj) {
var formname = obj.form.name;
var radioname = obj.getAttribute("Name");
document.forms[formname]["h"+radioname].value = $("input:radio[name='" + radioname + "']:checked").val();
}
// --></script>
<script type="text/javascript" language="JavaScript"><!--
function disp(obj){
var naiyo02="";
var naiyo03="";
var naiyo04="";
var flag = 0;
//チェックボックス1の値
for(i=0; i<document.forms["test"].checkbox02.length; i++){
if(document.forms["test"].checkbox02[i].checked){
naiyo02 = naiyo02 + "■本日は月曜日:"+ document.forms["test"].hradio00.value + ' ' + document.forms["test"].checkbox02[i].value + '\n';
flag = flag+1;
}}
if(flag == 0){
naiyo02 = "■本日は月曜日:"+ document.forms["test"].hradio00.value + ' ' + "未選択"+ '\n';
}
//チェックボックス2の値
for(i=0; i<document.forms["test"].checkbox03.length; i++){
if(document.forms["test"].checkbox03[i].checked){
naiyo03 = naiyo03 + "■本日は火曜日:"+ document.forms["test"].hradio00.value + ' ' + document.forms["test"].checkbox03[i].value + '\n';
flag = flag+1;
}}
if(flag == 0){
naiyo03 = "■本日は火曜日:"+ document.forms["test"].hradio00.value + ' ' + "未選択"+ '\n';
}
//チェックボックス3の値
for(i=0; i<document.forms["test"].checkbox04.length; i++){
if(document.forms["test"].checkbox04[i].checked){
naiyo04 = naiyo04 + "■本日は水曜日:"+ document.forms["test"].hradio00.value + ' ' + document.forms["test"].checkbox04[i].value + '\n';
flag = flag+1;
}}
if(flag == 0){
naiyo04 = "■本日は水曜日:"+ document.forms["test"].hradio00.value + ' ' + "未選択"+ '\n';
}
str =
naiyo02 +'\n'+
naiyo03 +'\n'+
naiyo04 +'\n';
alert(str);
}
// --></script>
</head>
<body>
<FORM name="test">
<table>
<tr>
<td class="c">
■天気
</td>
<td class="n" >
<label for="radiocheck04"><input type="radio" id="radiocheck04" name="radio00" value="晴れ" onClick="setVal(this);">晴れ</label>
<label for="radiocheck05"><input type="radio" id="radiocheck05" name="radio00" value="曇り" onClick="setVal(this);">曇り</label>
<input type="hidden" name="hradio00" value="未入力"><br>
</td>
</tr>
</table>
<table>
<tr>
<td class="c" >
■月曜日<br> (複数選択可)
</td>
<td class="n" >
<input type="checkbox" name="checkbox02" value="さくら">さくら<br>
<input type="checkbox" name="checkbox02" value="まっちゃ">まっちゃ<br>
<input type="checkbox" name="checkbox02" value="不明"> 不明<br>
</td>
</tr>
</table>
<table>
<tr>
<td class="c" >
■火曜日<br> (複数選択可)
</td>
<td class="n" >
<input type="checkbox" name="checkbox03" value="バニラ">バニラ<br>
<input type="checkbox" name="checkbox03" value="不明"> 不明<br>
</td>
</tr>
</table>
<table>
<tr>
<td class="c" >
■火曜日<br> (複数選択可)
</td>
<td class="n" >
<input type="checkbox" name="checkbox04" value="いちご">いちご<br>
<input type="checkbox" name="checkbox04" value="ミント">ミント<br>
<input type="checkbox" name="checkbox04" value="バニラ">バニラ<br>
<input type="checkbox" name="checkbox04" value="不明"> 不明<br>
</td>
</tr>
</table>
<input type="button" value="確認" onclick="javascript:disp(this.form)">
</Form>
<body>
</html>
No.1ベストアンサー
- 回答日時:
冗長すぎていまいち理解できないところもあるので
こんな感じでどうでしょうか?
<script>
function func(f){
var txt={"c1":"チェック1","c2":"チェック2","c3":"チェック3"};
var moji="";
for(var i in txt){
var n=f.elements[i];
moji+=txt[i]+":";
if(!n.length){
moji+=((n.checked)?n.value:"未選択")+"\n";
}else{
var temp="";
for(var j=0;j<n.length;j++){
if(n[j].checked){
if(temp!="") temp+="+";
temp+=n[j].value;
}
}
moji+=(temp!=""?temp:"未選択")+"\n";
}
}
alert(moji);
}
</script>
<form>
<p>
ななし:<input type="checkbox" value="1">
1:<input type="checkbox" name="c1" value="1">
<input type="checkbox" name="c1" value="2">
<input type="checkbox" name="c1" value="3">
2:<input type="checkbox" name="c2" value="1">
3:<input type="checkbox" name="c3" value="1">
<input type="checkbox" name="c3" value="2">
<input type="button" value="check" onclick="func(this.form)">
</p>
</form>
ありがとうございます!!
お礼が遅くなりまして、申し訳ありませんでした。
elementsを使うんですね。
かなりすっきりし、助かりました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
チェックボックスの設定
-
フォームのチェックボックスの...
-
チェックボックスを使って条件検索
-
【jsp/Java】チェックボックス...
-
チェックボックスに連動するテ...
-
チェックボックスのON/OFFでVal...
-
チェックボックスに全てチェッ...
-
背景色を変えて未入力チェック...
-
チェックボックスが複数ある場...
-
javascriptで確認ダイアログの...
-
チェックボックスの表示・非表...
-
return trueとreturn falseの用...
-
onClickとsubmitの処理順序
-
onchangeイベントを強制的に発...
-
プルダウン選択を変更すると、...
-
perl cgi文字化け解消方法と[1...
-
新しくフォルダを作成したい
-
javascriptで<table>背景色の取得
-
onClick="this.form.submit
-
tableの任意行にfocusをあてる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックスのON/OFFでVal...
-
チェックボックスの設定
-
【jsp/Java】チェックボックス...
-
チェックボックスで指定したも...
-
背景色を変えて未入力チェック...
-
確認ページからフォームページ...
-
JSP内で可変するチェックボック...
-
配列のチェックボックスをjavas...
-
チェックボックスのグループ化...
-
チェックボックスのON/OFFに応...
-
JavaScriptからの戻り値
-
contact-form7のプラグインでチ...
-
スクリプト内でチェックボック...
-
プルダウンメニューから特定曜...
-
チェックボックスとラジオボタ...
-
チェックボックスを使って条件検索
-
if文でelseを使わずに否定
-
チェックボックスで合計値を計...
-
<input type="checkbox" checke...
-
checkboxをクリックしてリロー...
おすすめ情報