我有一个简单的表单,某些字段通过JS设置为“只读”。为什么我不能使用点语法来访问表单元素id属性而不是关联arary
我也不是不明白的是为什么这条线在我的代码工作:
mainForm[readonlyElms[i].id].setAttribute("readonly", "readonly");
而这条线抛出了一个错误“遗漏的类型错误:无法读取属性‘0’的未定义”:
mainForm.readonlyElms[i].id.setAttribute("readonly", "readonly");
(简化的形式):
<form>
<input type="text" id="fname">
<input type="text" id="lname">
<input type="text" id="dob">
<input type="tel" id="tel">
</form>
JS
var mainForm = document.forms[0];
var readonlyElms = [fname, lname, dob];
for (var i = 0, len = readonlyElms.length;
i < len;
i++) {
//this line does the job
//mainForm[readonlyElms[i].id].setAttribute("readonly", "readonly");
//BUT why not this line???
mainForm.readonlyElms[i].id.setAttribute("readonly", "readonly");
}
我努力说出问题标题,所以如果使用的术语不正确,请纠正。
谢谢
由于表达'readonlyElms [I] .id'本身不是mainForm'的'的性质。它是一个返回_value_的表达式,它可能是'mainForm'的一个属性。 –
你为什么不使用readonlyElms [i] .setAttribute()?此外,带有ID的元素会在id的名称下创建全局变量,这就是您可以如何访问readonlyElms数组中的输入。我想mainform.ID也会起作用。 – dandavis