【发布时间】:2015-05-25 18:33:13
【问题描述】:
下面的脚本让我吃惊。它产生以下结果:
互联网探索
aaa: 未定义 bbb: 未定义 ccc: value3 ddd: value4 eee: value5
FireFox 和 Chrome
aaa: bbb: ccc: value3 ddd: value4 eee: value5
为什么当一个输入与另一个输入的名称具有相同的 ID(或相反)时,输入没有值?
function testResults(form) {
alert([
"aaa: " + form.aaa.value,
"bbb: " + form.bbb.value,
"ccc: " + form.ccc.value,
"ddd: " + form.ddd.value,
"eee: " + form.eee.value
].join(', '));
}
<form>
<input type="text" name="aaa" id="bbb" value="value1" />
<input type="text" name="bbb" id="aaa" value="value2" />
<input type="text" name="ccc" id="ccc" value="value3" />
<input type="text" name="ddd" value="value4" />
<input type="text" id="eee" value="value5" />
<input type="submit" onclick="testResults(this.form)"/>
</form>
【问题讨论】:
-
错误的闭包,就像在 JavaScript 中经常发生的那样......
-
@kuroineko 是的,我知道,但问题与一个元素与另一个元素 ID 同名时的冲突有关。
标签: javascript html forms dom