如何将值从一个文本输入复制到数组/多个文本输入

时间:2013-05-07 03:56:12

标签: javascript

如何将值从一个文本输入复制到数组文本输入

<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 />

2 个答案:

答案 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相关联的第一个文字输入。