所以我有这个问题,我需要根据一些变量设置一个复选框的值。
问题是我遇到了我将使用的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标记。
答案 0 :(得分:7)
您可以将begins with attribute selector与querySelectorAll:
一起使用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 强>