0

我有一个带有单选按钮的表单,我正在使用 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 用户,但对编程本身有很好的理解(我想,哈哈)结果并为每个组使用相同的循环(每个组具有正确的变量)。但是,当我添加 [name="elements name"] 作为 document.querySelectAll 的标识符时,它只抓取具有该名称的元素,如果我将元素本身命名为相同的名称,则单选按钮会失去其固有属性,即只允许一个单选每次选择每个问题的按钮?我还尝试为每个组创建一个类 ID,并尝试将其用作 document.querySelectAll 中的标识符,但它似乎根本不起作用。任何帮助是极大的赞赏..

4

1 回答 1

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");
于 2013-10-09T19:56:58.017 回答