Dojo: TypeError: dojo.byId(...).attr is not a function

Posted

技术标签:

【中文标题】Dojo: TypeError: dojo.byId(...).attr is not a function【英文标题】: 【发布时间】:2013-04-17 16:47:12 【问题描述】:

奇怪,第一行工作正常,但第三行给我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.byId()?我很确定具有该 ID 的 <input type="hidden"> 确实存在....

【问题讨论】:

【参考方案1】:

注意你是如何在第 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;
);

【讨论】:

谢谢,太棒了!!我也使用dojo.html.set(dojo.byId("_student_text"), studentName); 将学生姓名放入 div 内容中。再次感谢和欢呼。

以上是关于Dojo: TypeError: dojo.byId(...).attr is not a function的主要内容,如果未能解决你的问题,请参考以下文章

Dojo onCellDblClick 功能不起作用

Dojo.js AMD 加载程序 - 类型错误:无法将未定义转换为对象

dojo常用函数

dojo常用函数

Dojo dojo.rawXhrPost 和 dojo.xhrPost

dojo的ready函数:dojo.ready(以前的dojo.addOnLoad)