Javascript 具有类似数组名称的GetElementsByName

Javascript 具有类似数组名称的GetElementsByName,javascript,foreach,getelementsbyname,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) {

我经常在命名控件以获取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])。。。 但我真的无法让它发挥作用

有什么帮助吗?

如果您需要所有颜色输入,您可以改为使用查询名称属性:

document.querySelectorAll("input[name^='color[']")
这将在文档中查找名称属性以
color[
开头的所有
input
标记。这是一个小提琴

如果您只需要
颜色[3]
,可以使用:

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

var element=document.getElementsByName(“颜色[3]”);
警报(元素[0].id);

它工作得很好。你应该记住的是返回类型是一个元素数组而不是一个元素。我会再试一次。我用firefox控制台试了又试,试了又试……好的,它工作了……我可以发誓今天早上,在我的房间里,没有工作。我有没有可能用一些xml写xxx?我想我不会写在xml标记名中加上“[”。@AndreaBogazzi您可以用这种方式编写xml。.请看这里:如果我这样写,我会得到“格式不正确”…我尝试了2个火腿0.00 6.00 NSSSYupp。.问题是因为“]'但我不知道我看到的xml规范中不允许的原因。我解决了做xxx和编写一点javascript来检查是否有属性索引,然后修改标记名名+'['+key+']',它就可以工作了。
<input name="color[3]" id="color_3" type="text" />

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

alert(element[0].id);