我想使用javascript将“第1轮”中的输入值复制到“第2轮”。我的“第二轮”值实际上是空的,但是为了调试,我给了它们值。
我认为我的JS i2 = i1;
中的行需要增强,但无法弄清楚如何。我尝试过使用“.innerHTML”,但没有运气。
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;
答案 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代码。
希望它有所帮助!