Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
接收javascript中只有一个元素的表单数组时出现问题_Javascript_Html_Arrays_Forms - Fatal编程技术网

接收javascript中只有一个元素的表单数组时出现问题

接收javascript中只有一个元素的表单数组时出现问题,javascript,html,arrays,forms,Javascript,Html,Arrays,Forms,我收到一份html表格。当数组中有2个或多个元素时,这可以正常工作,但当只接收到一个元素时,我得到错误用户[t]在fireBug中为null var users = form.elements["uname[]"]; for(t in users) { dataString += "User: "+users[t].value+"\n" } 这就解决了它: if( typeof users.value === 'string' ) { users = [ users ]; } 您

我收到一份html表格。当数组中有2个或多个元素时,这可以正常工作,但当只接收到一个元素时,我得到错误用户[t]在fireBug中为null

var users = form.elements["uname[]"];

for(t in users) {
  dataString += "User: "+users[t].value+"\n"
}
这就解决了它:

if( typeof users.value === 'string' ) {
   users = [ users ];
}

您可以检查变量是否为字符串并将其转换为数组:

if( typeof users === 'string' ) {
    users = [ users ];
}
var users = [].concat(form.elements["uname[]"]);
为了避免对中的数组进行迭代,该语句旨在枚举对象属性。您可以尝试使用更好的循环,例如:

var userCount = users.length;
for (var i = 0; i < userCount; i++) {
      dataString += "User: "+users[i].value+"\n"
}

您可以检查变量是否为字符串并将其转换为数组:

if( typeof users === 'string' ) {
    users = [ users ];
}
var users = [].concat(form.elements["uname[]"]);
为了避免对中的数组进行迭代,该语句旨在枚举对象属性。您可以尝试使用更好的循环,例如:

var userCount = users.length;
for (var i = 0; i < userCount; i++) {
      dataString += "User: "+users[i].value+"\n"
}
我知道这是一个老问题,但我在寻找其他问题时绊倒了它。不管怎么说,我想我会为其他偶然发现这个问题的人提供另一个答案

您可以使用以下命令,而不是检查该类型是否为数组,然后选择将该值封装在新数组中

它的语法是

var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
其中任何值都可以是数组或单个值

在您的特定情况下,您可以从一个空数组开始,并连接表单输入,无论您获得的是单个值还是数组:

if( typeof users === 'string' ) {
    users = [ users ];
}
var users = [].concat(form.elements["uname[]"]);

我知道这是一个老问题,但我在寻找其他问题时绊倒了它。不管怎么说,我想我会为其他偶然发现这个问题的人提供另一个答案

您可以使用以下命令,而不是检查该类型是否为数组,然后选择将该值封装在新数组中

它的语法是

var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
其中任何值都可以是数组或单个值

在您的特定情况下,您可以从一个空数组开始,并连接表单输入,无论您获得的是单个值还是数组:

if( typeof users === 'string' ) {
    users = [ users ];
}
var users = [].concat(form.elements["uname[]"]);


变量不是字符串。警报(用户类型);告诉我这是一个对象(var i=0;ivar userCount=users.length给你正确的计数?如果是这样,您可以将示例的第一位更改为检查一个元素,而不是检查变量类型。如果我发送一个元素users.length未定义,如果我发送两个元素users.length为我提供了正确的计数,您应该能够将其写入JS,因为两种上下文中的值都不同。我将更新示例。变量不是字符串。警报(用户类型);告诉我这是一个对象(var i=0;ivar userCount=users.length给你正确的计数?如果是这样,您可以将示例的第一位更改为检查一个元素,而不是检查变量类型。如果我发送一个元素users.length未定义,如果我发送两个元素users.length为我提供了正确的计数,您应该能够将其写入JS,因为两种上下文中的值都不同。我将更新示例。这应该是公认的答案-更好的解决方案-简明易读这应该是公认的答案-更好的解决方案-简明易读