GetElementsByName包含名称之类的数组

时间:2013-08-06 08:10:29

标签: javascript foreach getelementsbyname

当我命名我的控件以便在POST或GET中获取数组时,我经常使用这种表示法。

<input name="color[1]" type="text" />
<input name="color[2]" type="text" />
<input name="color[3]" type="text" />

所以在我的脚本中我可以做到

<?php $data=$_GET["color"]; 
for each ($color as $key=>$value) {
   doSomething();
} ?>

经常发生我需要在javascript中获取这些id,但我无法获取它们,所以我经常在html中为每个元素添加一个ID

<input name="color[3]" id="color_3" type="text" />

这样我就可以使用document.getElementsById('color_3')

相反,我想找到使用document.getElementsByName(color [3])的方法...... 但我真的无法让它发挥作用。

任何帮助?

2 个答案:

答案 0 :(得分:8)

如果您想要所有颜色输入,可以使用querySelectorAll来查询名称属性:

document.querySelectorAll("input[name^='color[']")

这会在文档中查找名称属性以input开头的所有color[代码。 Here是一个小提琴。

如果您只想color[3],可以使用:

var color3 = document.getElementsByName("color[3]");
console.log(color3[0]);

答案 1 :(得分:3)

<input name="color[3]" id="color_3" type="text" />

var element = document.getElementsByName("color[3]");

alert(element[0].id);

它运作正常..你应该想到的是返回类型是一个元素数组而不是单个元素