4

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

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

4

3 回答 3

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]
}
于 2012-05-04T14:43:33.393 回答
3

使用方括号表示法

function loopDeLoop (xyz) {
    var elems = form.elements[xyz + "_name"],
        len = elems.length,
        i;
    for (i=0;i<len;i++){
        console.log(elems[i];
    }
}
于 2012-05-04T14:43:36.787 回答
0

使用[]属性语法:

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

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

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

于 2012-05-04T14:43:04.610 回答