以下のコードは問題なく動作します (自己完結型の Web ページ)。問題は、チェックボックスの名前が異なる場合に、チェックボックスの配列 (グループ) を取得する方法です。jquery を使用する場合は、すべて同じクラスを指定して、そのクラスでそれらを取得できますが、裸の JavaScript を使用している場合は、タグ名 (チェックボックスの場合は「入力」) で要素を取得できます。 、そしてそれぞれに「choice」で始まる名前属性があることを確認し、ボタン(入力でもある)や異なる名前の他のチェックボックスなど、「choice」で始まらないものを無視します。チェックボックスを何らかの方法でグループ化しない限り、ページが巨大な場合は少し非効率的です。
それらをグループ化するには、次のようなタグにまとめます
`<div id="checkboxes"> (checkboxes go here) </div>`
次に使用する
`var cb = document.getElementById("checkboxes");`
`var arrInputs =cb.getElementsByTagName("input");`
- 行が arrInputs 配列を取得します。これは、Div 内から入力型要素を取得するだけです。ただし、ページレイアウトでチェックボックスを1つのdivに配置できるとは想定したくありません
これがダグに役立つことを願っています
<script type="text/javascript">
function checkTotal() {
document.forms.listForm.total.value = '';
var sum = 68.50;
var frm=document.forms.listForm; // wasnt sure what your original listForm element was so I've put this form into a variable, frm
frm.total.value = '';
var arrInputs =document.getElementsByTagName("input"); // get all Input type elements on the form
for (i=0; i < arrInputs .length;i++) {
if (arrInputs[i].name.substr(0,6) == "choice") { // if the name starts with "choice"
if (arrInputs[i].checked) {
sum = sum + parseFloat(arrInputs[i].value);
}
}
}
frm.total.value = sum.toFixed(2);
}
</script>
</head>
<body>
<form name="listForm">
<a href='javascript:checkTotal()'>check</a><br>
<input type=checkbox name="choice1" value="1"><br>
<input type=checkbox name="choice2" value="2"><br>
<input type=checkbox name="choice3" value="3"><br>
<input type=checkbox name="choice4" value="4"><br>
<input type=checkbox name="choice5" value="5"><br>
<input type=checkbox name="choice6" value="6"><br>
<br>
<input type=text name=total value=""><br>
</form>
</body>
</html>