Dojo:TypeError:dojo.byId(...)。attr不是函数

时间:2013-04-17 16:47:13

标签: javascript html dojo

很奇怪,第一行工作正常但第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">确实存在....

1 个答案:

答案 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;
});