使用dijit.byId和dojo.byId混淆

1 dojo

我试图理解dijit.byId和dojo.byId之间的区别

对于这个我已经采取了一个按钮和一个div.(要点击按钮设置div内的数据)

给我看看!

<div id="findMe">
    Hiya!
</div>
Run Code Online (Sandbox Code Playgroud)

这是有效的(dojo.byId)

function callMe()
{
  var node = dojo.byId('findMe');
 node.innerHTML = "Hello World";
 }
Run Code Online (Sandbox Code Playgroud)

但这不起作用(dijit.byId)

 function callMe()
    {
      var node = dijit.byId('findMe');
     node.innerHTML = "Hello World";
     }
Run Code Online (Sandbox Code Playgroud)

我的理解是,在引用div时我们需要使用dojo.byId,当我们引用Individual组件时,使用dijit.byId

如果我错了,请纠正我.

emb*_*oss 5

如前所述,dojo.byId检索具有该id的DOM节点(如果存在).

dijit.byId检索dijit._Widget(及其子类)的实例,即dojo对UI对象的抽象,而不是widget的DOM节点.但重要的是要注意dijit.byId通过atrribute"widgetId"搜索小部件,而不是 "id".如果通过传递已经具有"id"的容器节点来声明小部件,则它们是相等的,但是如果未明确指定,dojo仍会为每个小部件创建属性"widgetId".

这意味着widgetId和id通常是相同的,但它们可能是不同的.此外,即使在容器节点的id属性不存在的情况下,也始终为给定小部件设置widgetId.

这意味着每当您打算处理DOM树本身时都应该使用dojo.byId,并且只有在您想要获取某个窗口小部件实例的实例的情况下才应该使用dijit.byId.如果没有小部件,则根本没有理由使用dijit.byId.