使用构造变量名称循环表单上的单选按钮

时间:2012-05-04 14:38:27

标签: javascript forms radio-button

我在表单上有几个单选按钮,所有单元都按3组分组,单击它们时我需要对它们运行JS函数。在这个函数中,我遍历按下的按钮组中的单选按钮(即,如果该组被称为'abc_name'id,则使用for (var i = 0; i < form.abc_name.length; i++){ })。

我想知道是否有办法使用构造的组名以相同的方式操作一组单选按钮?例如,如果我将'xyz'传递给函数,我需要代码为for (var i = 0; i < form.xyz_name.length; i++){ }。感谢。

3 个答案:

答案 0 :(得分:3)

在这两种情况下,确实 正在使用getElementsByName();

for (var els = document.getElementsByName(xyz + '_name'), i=0; i<els.length;i++) {
    // something on els[i]
}

虽然直接等同于你所得到的:

for (var els = form.elements[xyz + "_name"];, i=0; i<els.length;i++) {
    // something on els[i]
}

答案 1 :(得分:3)

使用square bracket notation

function loopDeLoop (xyz) {
    var elems = form.elements[xyz + "_name"],
        len = elems.length,
        i;
    for (i=0;i<len;i++){
        console.log(elems[i];
    }
}

答案 2 :(得分:0)

使用[]属性语法:

function loop(s) {
   s += '_name';
   var inputs = form[s];

   for (var i = 0; i < inputs.length; ++i) {
       ...
   }
}

当属性键是变量时,这是必要的 - a.b语法仅在b为“文字”时才有效。