仅在一组较大的无线电组中迭代特定的无线电组

时间:2010-10-01 18:25:46

标签: javascript getelementsbyclassname

我有一个包含26个问题的表格,所有这些表格都有单选按钮组作为用户的答案选择(它计算特定属性上特定入侵植物物种的风险因子)。最后,将每个无线电组中的选定值相加。

使其变得复杂的是用户可以选择填写5种不同入侵植物物种的问卷;换句话说,我有26行和5列,最后我需要分别计算每列。我通过使用getElementsByClassName完成了这项工作,它在Firefox中就像一个魅力,但在IE中则不然。不幸的是,我这样做的客户端已经将IE作为用户标准。我已尝试在网上发布了许多通用的getElementsByClassName函数,但它们似乎不起作用;我一直在页面上看到错误。

Firefox中成功的功能如下:

function addSpecies1(frm, resultHolder)
{
var elems = frm.getElementsByClassName('species1'),
calculator = elems.length,
total = 0;
for(var i=0; i<calculator; i++)
if(elems[i].type=='radio' && elems[i].checked  && !isNaN(elems[i].value))
total+=parseFloat(elems[i].value);
resultHolder.value=total;
}

可能有一个非常简单的答案(我是初学者!)但是我已经在墙上撞了一个多星期了......

1 个答案:

答案 0 :(得分:1)

最好和最简单的方法是使用 jquery 。它关注大多数跨浏览器问题。 你可以使用$('.species1')来做一个getElementsByClassName。

如果您不想使用jquery ,可以使用以下代码段

var inputs = document.getElementsByTagName('INPUT');
var inputlen = inputs.length;
var result = new Array();

for(var i=0;i<inputlen;i++)
{
   if( inputs[i].className == 'species1' && input.checked)
      result.push(inputs[i]);
}

结果包含所有选中的具有class species1 的复选框。您也可以使用循环来获取已检查的