Javascript:对象是元素数组吗

Javascript:对象是元素数组吗,javascript,jquery,html,arrays,Javascript,Jquery,Html,Arrays,今天我有个问题。我有一个HTML表单,它可以为电子邮件地址提供动态数量的HTML输入字段。通过Javascript,我想通过XMLHttpRequest评估这些数据 我获取如下输入字段: var elements = document.getElementById("emailmodal").elements["multiple[]"]; 然后我想检查它是否是一个数组,因为如果我只有一个输入字段,那么元素将不包含元素数组,而只包含一个元素: if(jQuery.isArray(elements

今天我有个问题。我有一个HTML表单,它可以为电子邮件地址提供动态数量的HTML输入字段。通过Javascript,我想通过XMLHttpRequest评估这些数据

我获取如下输入字段:

var elements = document.getElementById("emailmodal").elements["multiple[]"];
然后我想检查它是否是一个数组,因为如果我只有一个输入字段,那么元素将不包含元素数组,而只包含一个元素:

if(jQuery.isArray(elements))
{

    for(var i = 0; i < elements.length; i++)
    {

        formData.append("emailreceiver[]", elements[i].value);

    }

}else
{

    formData.append("emailreceiver[]", elements.value);

}
如果是数组,则通过For循环遍历元素,如果不是,则直接获取值

然而,这并不正确。脚本告诉我,即使我有多个输入,也没有数组

相应的HTML是

多亏了Mmcgowa

if(elements.length > 1)
{

    alert("Array");
    for(var i = 0; i < elements.length; i++)
    {

        formData.append("emailreceiver[]", elements[i].value);

    }

}else
{

    alert("No Array");
    formData.append("emailreceiver[]", elements.value);

}
这很有效。如果elements不是数组,element.length将是未定义的

多亏了Mmcgowa

if(elements.length > 1)
{

    alert("Array");
    for(var i = 0; i < elements.length; i++)
    {

        formData.append("emailreceiver[]", elements[i].value);

    }

}else
{

    alert("No Array");
    formData.append("emailreceiver[]", elements.value);

}

这很有效。如果elements不是数组,element.length将是未定义的

我知道您已经有了一个解决方案,但为什么不简化代码流并执行以下操作:

if (elements.length == 1) elements = [elements];

// now you know that if *elements* is not empty, it is always an array
for (var i = 0; i < elements.length; i++)
{
    formData.append("emailreceiver[]", elements[i].value);
}

我知道您已经有了一个解决方案,但为什么不简化代码流并执行以下操作:

if (elements.length == 1) elements = [elements];

// now you know that if *elements* is not empty, it is always an array
for (var i = 0; i < elements.length; i++)
{
    formData.append("emailreceiver[]", elements[i].value);
}

Yes对象在JS中也是一个元素数组,因为Javascript不支持关联数组。DOM元素没有elements方法。你能分享元素的输出吗?你不能仅仅依靠对象的长度,如果长度大于一,就把对象当作一个数组吗?我上传了一些var log的图片。我同意@Mmcgowa3,你可以轻松地使用$form input.email.length并检查是否有多个输入。此外,您还可以保留一个带有全局变量的计数器,并在相同的函数中对其进行更新,该函数将向formYes对象添加额外的输入元素。对象也是JS中的元素数组,因为Javascript不支持关联数组。DOM元素没有方法元素。你能分享元素的输出吗?你不能仅仅依靠对象的长度,如果长度大于一,就把对象当作一个数组吗?我上传了一些var log的图片。我同意@Mmcgowa3,你可以轻松地使用$form input.email.length并检查是否有多个输入。您还可以保留一个带有全局变量的计数器,并在向表单添加其他输入元素的相同函数中更新它