【问题标题】:GetElementsByName with array like name具有类似名称的数组的 GetElementsByName
【发布时间】:2013-08-06 08:10:28
【问题描述】:

我在命名控件时经常使用这种表示法,以便在 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]) 的方法... 但我无法真正让它发挥作用。

有什么帮助吗?

【问题讨论】:

    标签: javascript foreach getelementsbyname


    【解决方案1】:

    如果你想要所有的颜色输入,你可以使用querySelectorAll来查询name属性:

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

    这会在文档中查找名称属性以color[ 开头的所有input 标记。 Here 对此很感兴趣。

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

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

    【讨论】:

      【解决方案2】:
      <input name="color[3]" id="color_3" type="text" />
      
      var element = document.getElementsByName("color[3]");
      
      alert(element[0].id);
      

      它工作得很好..你应该想到的是返回类型是一个元素数组而不是单个元素

      【讨论】:

      • 我要再试一次。我用firefox控制台试了又试......好吧它工作......我可以发誓今天早上,在我的房间里,没有工作..任何机会我都可以写xxx[ 3]> 在一些 xml 中?我不认为我可以在里面写带有“[”的xml标签名称。
      • @AndreaBogazzi 你可以这样写 xml .. 见这里:jsfiddle.net/xE6bh
      • 如果我这样写,我会得到“格式不正确”... 2意大利熏火腿0.006.00NS[1]>S[2]>S[8]>
      • 是的,我试过 .. 问题是因为 ']' 但不知道原因
      • 在我看到的 xml 规范中是不允许的。我解决了 xxx 并编写了一些 javascript 来检查是否有属性索引,然后修改标记名 +'['+key +']' 并且它可以工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 2012-01-27
      • 2014-08-02
      • 2014-06-09
      相关资源
      最近更新 更多