将此id中的<input />值复制到其他id中的<input />

时间:2018-01-17 20:55:29

标签: javascript

我想使用javascript将“第1轮”中的输入值复制到“第2轮”。我的“第二轮”值实际上是空的,但是为了调试,我给了它们值。

我认为我的JS i2 = i1;中的行需要增强,但无法弄清楚如何。我尝试过使用“.innerHTML”,但没有运气。

FIDDLE

Html:

<div id="round1">
  <input type="text" name="partner1" value="name1" />
  <input type="text" name="partner2" value="name2" />
</div>
<div id="round2">
  <input type="text" readonly name="partner1" value="name3" />
  <input type="text" readonly name="partner2" value="name4" />
</div>

JS:

var r1 = document.getElementById("round1");
var i1 = r1.getElementsByTagName("input")[0].value;
alert(i1);
var r2 = document.getElementById("round2");
var i2 = r2.getElementsByTagName("input")[1].value;
alert(i2);
i2 = i1;

3 个答案:

答案 0 :(得分:2)

最初设置i1和i2时,您通过值提取每个字符串。这很重要,因为i1和i2各自代表每个表单元素值的副本,而不是元素本身的值。

您可以跳过单独声明i变量,而是放置:

r2.getElementsByTagName("input")[1].value=r1.getElementsByTagName("input")[0].value;

当然,您可以完全跳过中间步骤并同时执行所有操作:

 document.getElementById("round2").getElementsByTagName("input")[1].value = document.getElementById("round1").getElementsByTagName("input")[0].value;

答案 1 :(得分:1)

我认为你的JS代码必须是这样的......

var r1 = document.getElementById("round1");
var i1 = r1.getElementsByTagName("input")[0];
alert(i1.value);
var r2 = document.getElementById("round2");
var i2 = r2.getElementsByTagName("input")[0];
alert(i2.value);
i2.value = i1.value;

原始代码的问题在于您获取了字段的值,而不是字段本身的引用。

答案 2 :(得分:1)

你在i2和i1中存储的是元素的值而不是对元素的引用,这就是你的代码不工作的原因,你可以做的是将元素存储在变量中并交换这些元素的值,像这样:

var r1 = document.getElementById("round1");
var i1 = r1.getElementsByTagName("input")[0];
alert(i1.value);
var r2 = document.getElementById("round2");
var i2 = r2.getElementsByTagName("input")[1];
alert(i2.value);
i2.value = i1.value;

JS中的值被复制到新变量中,元素通过引用传递,这意味着即使你在变量中有它们,如果你编辑它们,结果也会影响到html代码。

希望它有所帮助!