Javascript:获取id为[x]的所有元素

Javascript:获取id为[x]的所有元素,javascript,Javascript,使用javascript如何获得id为[x]的元素的数量 示例HTML: <input name="vrow[0]" id="vrow[0]" value="0" type="text"/> <input name="vrow[1]" id="vrow[1]" value="0" type="text"/> <input name="vrow[2]" id="vrow[2]" value="0" type="text"/> <input name="vr

使用javascript如何获得id为[x]的元素的数量

示例HTML:

<input name="vrow[0]" id="vrow[0]" value="0" type="text"/>
<input name="vrow[1]" id="vrow[1]" value="0" type="text"/>
<input name="vrow[2]" id="vrow[2]" value="0" type="text"/>
<input name="vrow[3]" id="vrow[3]" value="0" type="text"/>
HTML4.01中的
[]
。但是,即使在HTML5中,也应该使用name属性(不带数字索引),然后使用:

请注意,旧版本的IE和Opera可能返回具有
id
属性的元素,这些属性的值与getElementsByName()中指定的名称相同。IE还可以返回具有相同值的name属性的非输入元素。

var inputTags=document.getElementsByTagName('input');
var inputTags = document.getElementsByTagName('INPUT');
var count=0;
for(var i=0;i<inputTags.length;i++)
if(inputTags[i].id.contains('vrow[')
count++;
var计数=0;
对于(var i=0;igetElementById始终返回一个元素(因为id是唯一的)。getElementsByName可以生成元素列表

<html>
<head>
 <script>
  function getElements() {
   var elements = document.getElementsByName("vrow[]");
   alert(elements.length);
  }
 </script>
</head>
<body onload="getElements()">
<input name="vrow[]" id="vrow_0" value="0" type="text"/>
<input name="vrow[]" id="vrow_1" value="0" type="text"/>
<input name="vrow[]" id="vrow_2" value="0" type="text"/>
<input name="vrow[]" id="vrow_3" value="0" type="text"/>
</body>
</html>

函数getElements(){
var elements=document.getElementsByName(“vrow[]”);
警报(元素长度);
}

如果使用带有支持CSS3的查询函数的JavaScript库,例如Prototype,则可以使用以选择器开头的属性来查找以vrow开头的id属性[

所以在原型中,这将是

$$('input[id^=vrow[])。每个

注意:这是未经测试的,您可能必须在选择器中转义[1]


如果出于某种原因,您希望坚持使用输入元素的名称,您可以使用:

var inputs = Array.prototype.slice.call(document.getElementsByTagName('input'));
var rows = inputs.filter(function (el) { return el.name.indexOf('vrow[') == 0 });
alert(rows.length);

有趣。但我得到一个对象不支持此属性或方法。FWIW,getElementsByName()在IE或Opera中不受支持。或者更确切地说,它受支持,但不正确:@Robusto:如果您注意这些问题,应该不会有任何问题。更新了我的答案以反映这一点。
var inputTags = document.getElementsByTagName('INPUT');
var count=0;
for(var i=0;i<inputTags.length;i++)
if(inputTags[i].id.contains('vrow[')
count++;
<html>
<head>
 <script>
  function getElements() {
   var elements = document.getElementsByName("vrow[]");
   alert(elements.length);
  }
 </script>
</head>
<body onload="getElements()">
<input name="vrow[]" id="vrow_0" value="0" type="text"/>
<input name="vrow[]" id="vrow_1" value="0" type="text"/>
<input name="vrow[]" id="vrow_2" value="0" type="text"/>
<input name="vrow[]" id="vrow_3" value="0" type="text"/>
</body>
</html>
var inputs = Array.prototype.slice.call(document.getElementsByTagName('input'));
var rows = inputs.filter(function (el) { return el.name.indexOf('vrow[') == 0 });
alert(rows.length);