如何将值从一个文本输入复制到数组文本输入
<script>
function sync()
{
var n1 = document.getElementById('n1');
var n2 = document.getElementById('n2');
n2.value = n1.value;
}
</script>
<input type="text" name="n1" id="n1" onkeyup="sync()"><br />
<input type="text" name="n2[]" id="n2"/><br />
<input type="text" name="n2[]" id="n2"/><br />
<input type="text" name="n2[]" id="n2"/><br />
<input type="text" name="n2[]" id="n2"/><br />
<input type="text" name="n2[]" id="n2"/><br />
答案 0 :(得分:1)
正如我在评论中指出的id
属性在页面中应该是唯一的,即应该只有一个带有id的元素。在您的情况下,您有许多ID为n2
如果我理解了该要求,您希望将n1
的值复制到所有n2
元素。您可以使用getElementsByName来实现此目标
function sync() {
var n1 = document.getElementById('n1');
var n2s = document.getElementsByName('n2[]');
for(var i=0; i<n2s.length;i++){
n2s[i].value = n1.value;
}
}
演示:Fiddle
答案 1 :(得分:0)
@Arun已经解释了如何通过for
循环并正确使用id
来实现您的目标。我想补充一下他的答案并澄清你可能有的混乱。
当您复制name
时,您正在创建一个数组。复制id
是完全错误的,因为它们是标识符(s),并且必须唯一。
请注意,没有getElement( s )ById()函数。它是getElementByID()
,因为它应该返回与此标识符关联的一个元素。
另请注意,您没有收到任何Javascript错误,getElementById()
只返回与ID n2
相关联的第一个文字输入。