-1
<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,但它只返回对象而不是值。

4

5 回答 5

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);
于 2013-08-20T06:50:00.320 回答
0

你可以遍历它们,或者使用 map.

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

演示


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

演示

于 2013-08-20T06:52:36.553 回答
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);

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

于 2013-08-20T06:57:21.923 回答
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;
});
于 2013-08-20T07:04:52.420 回答
-1

您需要使用 []

<input name="hello[]">value1</input>
<input name="hello[]">value2</input>
<input name="hello[]">value3</input>
<input name="hello[]">value4</input>
于 2013-08-20T06:49:15.933 回答