javascriptで複数行のチェックボックスの値を取得する

あまりしないので結構こまってしまいましたのでメモ・・・。

<script type="text/javascript">
function  clickfunc(){
	var len = document.form1.chkBox.length;
	for(i=0; i < len ; i++) { 
		if ( document.form1.checkbox[i].checked ) {
			//チェックが入っている時の処理
			//document.form1.checkbox[i].valueで値が取得できる
		}
	} 
}	
</script&gt;

・・・

<form method=post name="form1" action="xxx.html>"
<input type="button" value="ボタン名称" onClick=clickfunc()&gt;
<input type="checkbox" name="chkBox" value="xxx1>
<input type="checkbox" name="chkBox" value="xxx2>
<input type="checkbox" name="chkBox" value="xxx3>
</form&gt;

一見問題なさそうですが、これには落とし穴があります。
チェックボックスを表示する行が1行のときだとlenがundefinedとなってしまいます。

悩んだあげく、1行の場合の処理を追加しました・・・。
よりよい方法をご存じの方は教えて下さい。

 
<script type="text/javascript>
function  clickfunc(){
	var len = document.form1.chkBox.length;
	if ((len === undefined) && (document.form1.chkBox.checked == true)){
		//1行の場合の処理
		//チェックが入っている時の処理
		document.form1.checkbox[i].valueで値が取得できる
	}else{
		//複数行の場合の処理
		for(i=0; i < len ; i++) { 
			if ( document.form1.chkBox[i].checked ) {
			//チェックが入っている時の処理
			//document.form1.checkbox[i].valueで値が取得できる
			}
		} 
	}
}	
</script&gt;

・・・

<form method=post name="form1" action="xxx.html>"
<input type="button" value="ボタン名称" onClick=clickfunc()&gt;
<input type="checkbox" name="chkBox" value="xxx1>
<input type="checkbox" name="chkBox" value="xxx2>
<input type="checkbox" name="chkBox" value="xxx3>
</form&gt;
タイトルとURLをコピーしました