<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,但它只返回对象而不是值。
答案 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;
});
var items = [];
for (var i=0; i<a.length; i++) {
items.push(a[i].nextSibling.textContent);
}
答案 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);
的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>