1

I currently have a series of checkboxes for different items, which when selected modifies a total. JavaScript 代码如下。

<script type="text/javascript">
function checkTotal() {
document.listForm.total.value = '';
var sum = 0.00;
for (i=0;i<document.listForm.choice.length;i++) {
if (document.listForm.choice[i].checked) {
sum = sum + parseFloat(document.listForm.choice[i].value);
}
}
document.listForm.total.value = sum.toFixed(2);
}

</script>

此代码工作正常,但所有复选框都具有相同的输入名称“选择”。我需要更改它,以便每个输入名称都不同,例如choice1、choice2、choice3 等。如何更改JavaScript 以添加所有不同命名的复选框,而不是仅添加称为“choice”的复选框。

将不胜感激任何帮助,良好的 HTML 和 CSS 知识,但非常基本的 JavaScript。谢谢。

4

2 回答 2

1

您可以执行以下操作:

function checkTotal() {
    document.listForm.total.value = '';
    var sum = 0.00;
    var i, inputs, input;

    inputs = document.getElementsByTagName('input')

    for (i=0;i<inputs.length;i++) {
        input = inputs[i]
        if (input.type === 'checkbox' && input.name.substr(0, 6) === 'choice') {
            sum = sum + parseFloat(input.value);
        }
    }
    document.listForm.total.value = sum.toFixed(2);
}

这未经测试,但代码应通过 DOM 查找所有输入元素。然后它将遍历它们并检查那些也是名称以“选择”开头的复选框。然后它将复选框的值添加到总和中。

像 jQuery 这样的库让这类事情变得容易多了。

于 2013-10-19T13:21:05.243 回答
0

使用 jQuery,下面的代码片段将在页面上添加所有复选框值。我没有对此进行测试,但它应该可以工作。

$("input[type=checkbox]").each(function(){
   if(this.checked){
     sum = sum+this.val();
   }
});
于 2013-10-19T13:12:00.810 回答