querySelectorAll不选择具有名称的选择框

时间:2017-01-24 15:29:57

标签: javascript

我有一个表单,其中包含多个选择框和带有名称的数组的输入。 所以我有多个名为personroom []的选择框。我想用这个来获取这些

 var personroom=document.querySelectorAll("input[name='personsroom[]']");

            alert(personroom.length)

它给我null(“0”)。但以同样的方式我可以选择所有输入(文本)字段。奇怪。任何人都可以帮助我吗?

2 个答案:

答案 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;
&#13;
&#13;

答案 1 :(得分:0)

如果您使用的是选择框,那么您使用的是<select></select>,对吗?在查询中将input更改为select

var personroom=document.querySelectorAll("select[name='personsroom[]']");

        alert(personroom.length)