0

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

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

2 回答 2

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;
    }
}

演示:小提琴

于 2013-05-07T03:59:57.970 回答
0

@Arun 已经解释了如何通过for循环和id正确使用来实现您想要的。我只想补充他的答案并消除您可能遇到的任何困惑。

当您复制names 时,您正在创建一个数组。复制ids 是完全错误的,因为它们是标识符并且必须是唯一的

请注意,没有 getElement( s )ById() 函数。它getElementByID()应该返回与此标识符关联的单个元素。

另请注意,您在那里没有收到任何 Javascript 错误,getElementById()只是返回了与 id 关联的第一个文本输入n2

于 2013-05-07T04:19:00.143 回答