香草javascript按名称选择

时间:2015-01-20 15:58:26

标签: javascript

所以我有这个问题,我需要根据一些变量设置一个复选框的值。

问题是我遇到了我将使用的HTML的下一个命名约定:

<input id="jc_1" type="checkbox" name="jc[1]">
<input id="jc_2" type="checkbox" name="jc[2]">
<input id="jc_3" type="checkbox" name="jc[3]">
<input id="jc_4" type="checkbox" name="jc[4]">

要决定选择哪个输入,我通常会这样做:

document.getElementsByName('jc')

然后循环遍历所有这些并决定要检查哪一个,这里的问题是我真的不知道如何在这些特定条件下处理这种情况。

我无法使用JQuery,也无法更改HTML标记。

3 个答案:

答案 0 :(得分:7)

您可以将begins with attribute selectorquerySelectorAll

一起使用
var jcList = document.querySelectorAll("[name^=jc\\[]");

请注意,这可以匹配以下元素:

<input id="jc_1" type="checkbox" name="jc[0][0]">

对于您的特定要求,这可能不是问题。

答案 1 :(得分:1)

太糟糕了,你无法改变标记。

你可以做点像......

for(var i = 0; i<numberOfCheckboxes.length; i++){
    document.getElementsByName('jc['+i+']');
}

但这是非常可怕的代码。而且假设你知道numberOfCheckboxes。

答案 2 :(得分:1)

document.getElementsByName()返回一个数组(即使它只包含一个元素。您只需要引用所选数组中的[0]元素,如document.getElementsByName('jc[1]')[0]

document.getElementsByName('jc[1]')[0].setAttribute('checked','checked');

<强> DEMO