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.byId
和dojo.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() 无效的主要内容,如果未能解决你的问题,请参考以下文章