如何制作对象的数组

时间:2013-08-20 06:45:32

标签: javascript html

<input name="hello">value1
<input name="hello">value2
<input name="hello">value3
<input name="hello">value4


var a = getElementsByName('hello')



现在,我如何创建一个包含(value1,value2,value3,value4)的数组?

我想过使用makeArray,但它只返回对象而不是值。

5 个答案:

答案 0 :(得分:0)

你应该这样做: HTML:

<input type="text" id="hello1" value="value1">
<input type="text" id="hello2" value="value2">
<input type="text" id="hello3" value="value3">
<input type="text" id="hello4" value="value4">

JS:

alert('ready?');
var n = 4;
var arr = new Array(n);
for(var i = 0; i < n; i++) {
    arr[i] = document.getElementById('hello' + (i+1)).value;
}
alert(arr);

答案 1 :(得分:0)

您可以迭代它们,或使用地图。

var items = Array.prototype.map.call(a, function(el){
    return el.nextSibling.textContent;
});

demo


var items = [];
for (var i=0; i<a.length; i++) {
    items.push(a[i].nextSibling.textContent);
}

demo

答案 2 :(得分:0)

首先你的html应该是这样的:

<input name="hello1" value="value1" type="text" />
<input name="hello2" value="value2" type="text" />
<input name="hello3" value="value3" type="text" />
<input name="hello4" value="value4" type="text" />

即。如果您使用的是文本框,则您的名称属性应该不同。否则你无法获得这些值。当然,这些值实际上是属性。这是一个纯粹的JavaScript代码,可以做你想要的:

var inputs = document.querySelectorAll("input[type='text']");
var result = [];
for(var i=0; field=inputs[i]; i++) {
   result.push(field.value);   
}
alert(result);

这是一个展示示例http://jsfiddle.net/krasimir/nbmjG/

的jsfiddle

答案 3 :(得分:0)

您的输入必须如此:Demo

<input name="hello" value="value1">
<input name="hello" value="value2">
<input name="hello" value="value3">
<input name="hello" value="value4">

然后,将返回值数组:

var arr = Array.prototype.map.call(document.getElementsByName('hello'), function(elem){
   return elem.value;
});

答案 4 :(得分:-1)

您需要使用[]

<input name="hello[]">value1</input>
<input name="hello[]">value2</input>
<input name="hello[]">value3</input>
<input name="hello[]">value4</input>