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 を持つ要素は 1 つだけである必要があります。あなたの場合、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

for@Arun は、ループを介してid正しく使用して目的を達成する方法をすでに説明しています。彼の答えに追加して、あなたが持っているかもしれない混乱を解消したいと思います.

sを複製nameすると、配列が作成されます。それらは識別子であり、一意でなければならないため、 sの複製idは単純に間違っています。

getElement( s )ById() 関数がないことに注意してください。これは、この識別子に関連付けられている1 つgetElementByID()の要素を返すことになっているためです。

また、そこでは Javascript エラーが発生せず、getElementById()単にid に関連付けられた最初のn2テキスト入力が返されたことにも注意してください。

于 2013-05-07T04:19:00.143 に答える