很奇怪,第一行工作正常但第3行给我TypeError: dojo.byId(...).attr is not a function
。隐藏的字段包含所有学生对,<input type="hidden" id="_hidden_studentname_{somestudentid}" value="aStudentName">
,此处{somestudentid}仅指示它为学生ID变量。这样做的目的是尝试通过学生ID获取学生姓名。
dojo.connect(dijit.byId('_studentId_id'), 'onChange', function (val) {
var studentId=dijit.byId("_studentId_id").attr("value"); // line 1
var id="_hidden_studentname_"+studentId;
var studentName=dojo.byId(id).attr("value"); // line 3
dojo.byId("_student_text").attr("value", studentName);
});
所以dojo不允许变量放入dojo.byId()
?我很确定带有该ID的<input type="hidden">
确实存在....
答案 0 :(得分:6)
请注意您在第1行中使用dijit.byId
的方式,但在第3行中使用dojo.byId
。前者返回一个小部件(具有attr
函数),而dojo.byId
}返回一个DOM元素,它没有attr
方法。
DOM元素可以直接操作属性,因此您可以更新代码以使用something.value = 'some other value';
。
dojo.connect(dijit.byId('_studentId_id'), 'onChange', function (val) {
var studentId=dijit.byId("_studentId_id").attr("value"); // line 1
var id="_hidden_studentname_"+studentId;
var studentName=dojo.byId(id).value; // line 3
dojo.byId("_student_text").value =studentName;
});