dojo.byId() 有效,但 dijit.byId() 无效

Posted

技术标签:

【中文标题】dojo.byId() 有效,但 dijit.byId() 无效【英文标题】:dojo.byId() works but dijit.byId() doesn't 【发布时间】:2011-04-20 00:00:53 【问题描述】:

我有一个 ID 为 appointment_stylist_id 的选择字段。出于某种原因,其中第一个返回我的元素,但第二个返回 undefined

  console.log(dojo.byId('appointment_stylist_id'));
  console.log(dijit.byId('appointment_stylist_id'));

知道为什么吗?

【问题讨论】:

【参考方案1】:

这是因为dojo.byId 做你想做的事(查找具有特定 ID 的 DOM 元素),而 dijit.byId 不这样做。

dijit.byId 是一个通过指定名称 (id) 查找特定小部件的函数。此函数类似于 dojo.byId,但 dojo.byId 返回 DOMNodes,dijit.byId 返回作为小部件实例的 javascript 对象。

...

dijit.byIddojo.byId 经常被混淆,尤其是初次使用的用户。当您希望直接处理小部件的 JavaScript 对象实例并访问该小部件的功能时,应使用此函数。

http://dojotoolkit.org/reference-guide/dijit/byId.html

另见

What the difference between dojo.byId and dijit.byId?

【讨论】:

好的。也许这应该是一个单独的问题,但是有没有简单的方法来获取选择输入的选定值?在 jQuery 中,您只需执行 $("#appointment_stylist_id").val(). Most of the time, dojo.byId('appointment_stylist_id').value 会起作用。您也在使用 Dijit 吗?见this question .value 工作。谢谢。我没有使用 Dijit。 (我已经看到过这个问题,但它似乎并不适用。) 如果你更喜欢链接的东西,你可以做dojo.query("#appointment_stylist_id").attr("value")甚至var $ = dojo.query :-) 在 1.5 中不推荐使用 attr() - 支持 get/set 辅助方法。【参考方案2】:
dojo.byId("appointment_stylist_id");

返回元素。

dijit.byId("appointment_stylist_id");

返回小部件。

使用 dijit.byId 也可以获取元素的值,例如:

dijit.byId("appointment_stylist_id").getValue();

【讨论】:

getValue() 在大多数情况下已弃用,请改用get("value")

以上是关于dojo.byId() 有效,但 dijit.byId() 无效的主要内容,如果未能解决你的问题,请参考以下文章

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

dojo中的选择器

添加/删除样式时使用dojoAttachpoint的问题

用dojo检查id是不是存在

显示 dojo 简单对话框时出错

dojo常用函数