javascript:document.getElementsByName(“ sample []”)无效

时间:2018-09-23 11:02:23

标签: javascript arrays getelementsbyname

我有一个表格,您可以在需要时附加其他输入。所以我这样命名我的表单。

<input type="text" name="sample[]" />

我想使用名称“ sample []”访问输入的所有值,并使用javascript将其存储在数组中。我在下面使用了这段代码:

 var sample = document.getElementsByName(sample[]);

如何单独获取所有值?任何帮助将不胜感激。谢谢!!!

5 个答案:

答案 0 :(得分:1)

将此添加到您的js函数中,您将在values数组中获得输入值。 在这里,我得到了一个名称为“ sample []”的所有元素的NodeList,并转换为Array以方便处理数据。

var sample = Array.prototype.slice.call(document.getElementsByName('sample[]'));
var values = sample.map((o) => o.value);

对其进行了测试,以下是小提琴的链接。 https://jsfiddle.net/mfw4rv9o/13/

答案 1 :(得分:0)

字符串值'sample []'与sample[]的评估值完全不同。因此,这是对所有人的困惑。 如果您确定要将“ sample []”作为name属性的(字符串)值传递,请确保将其字符串化并添加。

答案 2 :(得分:0)

输入的名称为name="sample[]"getElementsByName的参数是元素的名称属性的值,因此应为"sample[]"

getElementsByName将返回一个NodeList,您可以使用它foreach对其进行循环,使用item来按索引从NodeList返回一个节点,或者使用索引{{1} }。

要在es6中获取数组中的所有值,可以使用散布运算符和映射:

sample[0]

let items = [...document.getElementsByName("sample[]")].map(i => i.value);
var sample = document.getElementsByName("sample[]");
console.log(sample[0].value);
console.log(sample.item(0).value);
let items = [...document.getElementsByName("sample[]")].map(i => i.value);
console.log(items);

答案 3 :(得分:0)

在ES6中:

var values = [...document.querySelectorAll("input[name='sample[]']")].map(x => x.value);

但是我将避免使用sample[]作为输入名称。

答案 4 :(得分:-1)

var sample = document.getElementsByName('sample[]');
sample[]之间添加引号。尝试避免在输入名称中使用[]