如何从输入数组中获取多维数组

时间:2014-04-27 08:00:08

标签: javascript arrays input multidimensional-array

我有以下设置:

<input name="myInput[3][0]" type="text">
<input name="myInput[3][1]" type="text">
<input name="myInput[4][0]" type="text">
<input name="myInput[4][1]" type="text">

使用php,在提交表单后访问值非常容易。例如,使用“post”方法,输入的值存储在多维数组$_POST['myInput']中。然后可以使用$_POST['myInput'][3][0]访问每个维度中的第一个元素。

JavaScript中是否有类似功能,即使没有通过“post”-method提交表单也可以使用?

JavaScript - get value from multiple inputs in an array之后,我为每个input元素添加了一个名为“myInput”的类,例如

<input name="myInput[3][0]" type="text" class="myInput">

然后我尝试了这个:

var myInput= document.getElementsByClassName('myInput');

但是,不出所料,这给了我一个不尊重任何数组键的一维数组。所以并不是所寻求的结果。 (在课堂上乱哄哄似乎很奇怪。)

2 个答案:

答案 0 :(得分:2)

按照您提供的示例,您可以使用&#39;匹配&#39;函数输入的名称以获取索引

m = inputs[i].name.match(/\[(\d+)\]\[(\d+)\]/);

提供了一个完整的工作示例here(jsfiddle)

var inputs = document.getElementsByClassName( 'webcampics' ),
res  = {}, i;
for (i=0; i<inputs.length; i++){

    m = inputs[i].name.match(/\[(\d+)\]\[(\d+)\]/);
   if(!res[m[1]]){
       res[m[1]] = {};
    }
   res[m[1]][m[2] ]= inputs[i].value;

  }

 console.log(res);

关于使用class作为选择器。如果使用JQuery,另一种方法是将所有输入元素包装在div或表单中,给它一个id(例如&#39; my_inputs&#39;),然后你就可以得到这样的输入:

var inputs = $('#my_inputs input');

答案 1 :(得分:0)

班级名称“myInput”在哪里? “myInput”不是类名,它是“name”属性的名称