我有一个表单,其中包含多个选择框和带有名称的数组的输入。 所以我有多个名为personroom []的选择框。我想用这个来获取这些
var personroom=document.querySelectorAll("input[name='personsroom[]']");
alert(personroom.length)
它给我null(“0”)。但以同样的方式我可以选择所有输入(文本)字段。奇怪。任何人都可以帮助我吗?
答案 0 :(得分:2)
问题似乎与选择器的确切目标有关。
原始选择器"input[name='personsroom[]']"
无法正常工作,但根据OP评论放弃了input
工作"[name='personsroom[]']"
有关转义[]
个字符的说明。在这种特定情况下,这不是问题,因为查询字符串使用内联单引号►"[name='personsroom[]']"
使用此"input[name=personsroom[]]"
,没有单引号,您需要像[]
"input[name=personsroom\\[\\]]"
// The below will fail with "Uncaught SyntaxError..." during execution
//var personroom = document.querySelectorAll("[name=personsroom[]]");
//The below works as we are escaping the special characters
var personroom = document.querySelectorAll("[name=personsroom\\[\\]]");
console.log("1.) personroom.length", personroom.length);
//Also, when using inline quotes, you do not need to escape any characters
var personroom = document.querySelectorAll("[name='personsroom[]']");
console.log("2.) personroom.length", personroom.length);

<input type='textbox' name='personsroom[]' />
<input type='textbox' name='personsroom[]' />
<input type='textbox' name='personsroom[]' />
<input type='textbox' name='personsroom[]' />
&#13;
答案 1 :(得分:0)
如果您使用的是选择框,那么您使用的是<select></select>
,对吗?在查询中将input
更改为select
:
var personroom=document.querySelectorAll("select[name='personsroom[]']");
alert(personroom.length)