Javascript 将数组元素数组传递给函数

Javascript 将数组元素数组传递给函数,javascript,php,html,Javascript,Php,Html,我一整天都在寻找这个概念的答案,最后我放弃了,决定在这里提问 这是一个概念: 我有一组排列的字段,我希望这组字段位于数组中,这样我就可以使用一个标准函数根据涉及的字段保存模块,并使用另一个参数检查要保存的模块 示例代码: module1.php 函数检查字段(f,m){ var fn=f.长度; 警报(fn);//输出为3 对于(i=0;i 函数检查字段(f,m){ var fn=f.长度; 警惕(fn); for(i=0;ifn是数组的长度,而不是数组的长度。应该使用f 改变 var nfn

我一整天都在寻找这个概念的答案,最后我放弃了,决定在这里提问

这是一个概念:

我有一组排列的字段,我希望这组字段位于数组中,这样我就可以使用一个标准函数根据涉及的字段保存模块,并使用另一个参数检查要保存的模块

示例代码:

module1.php


函数检查字段(f,m){
var fn=f.长度;
警报(fn);//输出为3
对于(i=0;i

函数检查字段(f,m){
var fn=f.长度;
警惕(fn);

for(i=0;i
fn
是数组的长度,而不是数组的长度。应该使用
f

改变

var nfn = fn[i].length; //Here's where it's not working

此外,您会发现
for
循环将失败,因为
i
将到达
fn
,但数组将停止在
fn-1

所以改变

for(i=0; i<=fn; i++){

for(i=0;if[i]仍然指向不正确的输入名称。您无法真正访问输入字段

这样做:

var inputName=f[i]+“[]”;//记住输入名称是field1[],而不是field1。
var value=document.querySelector(“input[name=”+inputName+“]”)value;
这里的值只是输入字段的输入文本,而不是真正的数组。如果有多个同名字段,请使用
document.querySelectorAll
方法获取所有输入字段,然后迭代逐个获取值


为了帮助你更好地理解,考虑这2个选项:

备选案文1:

html:


请注意,在选项1中,有多个字段具有相同的“名称”在选项2中,有多个字段具有唯一的名称。

oops,等等,这也不起作用,我的意思是,我打错了。让我更正一下。我打错了。实际上,这不起作用,因为f的值已经在字符串中,我只是想让这个概念更容易理解。问题仍然是,只是f的值已经是一个字符串,如果要获取元素的数组长度,则应将其作为元素名称传递,而不使用
,例如,我应传递field1[]作为
field1
而不是
'field1'
。只是,我想用不确定数量的字段传递字段,因为它是一个相同的概念,其他模块的字段数量不同。你是指类似
document.getElementById(f[I]).length
?正如我所说,我已经尝试过了,但它不起作用,它不计算元素的数组长度。对不起,你真的没有任何意义。你开始谈论字段数组,现在谈论数组中的数组,但没有给出所有这些不同数组的示例。我非常接近givi正在生成帮助排列的字段集?“field1[]”或“field1”,它只是一个名称,而不是真正的字段数组。它仍然是field1[],因为该字段将有多个值。就像它在while循环中一样。我将再次编辑我的问题。在html中,它仍然只是一个名称。您可以有多个同名字段,例如,两个同名字段“field1[]”,或两个名称不同的字段“field1[0]”、“field1[1]”。请记住,html输入字段中没有数组的概念,它们只是一个名称,可以灵活地重复多次相同的名称。
var nfn = fn[i].length; //Here's where it's not working
var nfn = f[i];
for(i=0; i<=fn; i++){
for(i=0; i<fn; i++){
<input name="field1[]" />
<input name="field1[]" />
var inputFields = document.querySelectorAll("input[name='field1[]']");
var values = [];
for (var j = 0; j < inputFields.length; j++) {
    var val = inputFields[i].value;
    values.push(val);
}
<input name="field1[0]" />
<input name="field1[1]" />
var values = [];
var j = 0;
var inputField;
while (true) {
    var inputField = document.querySelector("input[name='field1[" + j + "]']");
    if (!inputField) break;
    values.push(inputField.value);
    j++;
}