我有一个带有单选按钮的表单,我正在使用javascript循环并将所有单选按钮的总和返回到页面底部的输入元素。我正在使用的脚本是这样,它工作正常。
<script type="text/javascript">
function checkTotal() {
var radios = document.querySelectorAll('input[type=radio]'),
sumField = document.querySelector('input[type=text]');
var sum = 0;
for (var i = 0, len = radios.length - 1; i <= len; i++) {
if (radios[i].checked) {
sum += parseInt(radios[i].value);
}
}
sumField.value = sum;
}
</script>
这是我的表单http://cognitive-connections.com/Prefrontal_Cortex_Questionnaire.htm
但是我需要构建另一个表单,其中有不同组中的几个问题,我需要分别对每个组的总计进行求和,并相应地将它们发布到页面上相应的输入元素。这是我的新表单http://cognitive-connections.com/Prefrontal_Cortex_Questionnaire100913.htm
我不是一个高级的javascript用户,但对编程本身有很好的理解(我认为,大声笑)我的头告诉我,我应该能够简单地为每个不同的组声明一个唯一的var和一个独特的元素将结果发布到每个组并使用相同的循环(每个组具有正确的变量)。但是当我添加[name =“elements name”]作为document.querySelectAll的标识符时,它只抓取具有该名称的元素,如果我将这些元素命名为同一个名称,则单选按钮会松开它们只允许一个收音机的固有属性每个问题的按钮一次被选中?我也尝试为每个组创建一个类id,并尝试将它用作document.querySelectAll中的标识符,但它似乎根本不起作用。非常感谢任何帮助..
答案 0 :(得分:0)
根据我对问题的理解,以下是我的答案。这里是小提琴http://jsfiddle.net/8sbpX/10/。
function enableQ(cls) {
var ele = document.querySelectorAll('.' + cls)[0],
ev = (document.addEventListener ? "#addEventListener" : "on#attachEvent").split('#');
ele[ev[1]](ev[0] + "change", function () {
var radios = ele.querySelectorAll('[type="radio"][value="1"]:checked').length;
ele.querySelector('[type="text"]').value = radios;
});
}
enableQ("rad-grp");