Javascript:对象是元素数组

时间:2016-04-26 12:56:57

标签: javascript jquery html arrays

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

我像这样获取输入字段:

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是

&#13;
&#13;
<div class="form-group input-group">
<input type="text" name="multiple[]" class="form-control" value="<?php echo $kundendaten['Email']; ?>">
<span class="input-group-btn"><button type="button" class="btn btn-default btn-add">+</button></span>
</div>
&#13;
&#13;
&#13;

这是来自Bootstrap。

如果我将var日志设置为控制台,并且我有多于一个元素而不是它: enter image description here

如果我创建var log并且只有一个元素,它看起来像这个

enter image description here

我该怎么办?

干杯, 尼古拉斯

2 个答案:

答案 0 :(得分:2)

感谢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将是未定义的!

答案 1 :(得分:0)

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

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);
}