通过dojo访问元素时出现问题.我的道场1.8

Issue while accessing element by dojo.byId dojo 1.8

本文关键字:我的 问题 访问 dojo 元素 通过      更新时间:2023-09-26

我试图通过使用dojo访问div元素文本。byId,但它返回的值是第一次选择值时设置的值。它以某种方式将最初选择的值绑定到div的id,因此即使在我将值更改为其他值之后,也会返回相同的值。

var startDateLabel = dojo.byId("startDateLabel");
<label class="secondaryColor bold75Font floatRight" id="startDateLabel">${startDate} </label>

我尝试使用注册表。ById,但由于它是在一个小部件,创建了不止一次,它给出了"id已注册错误"。为了删除它,我还使用了destroyRecursive方法,但这也不起作用。

前面,我使用容器的id来加载小部件并遍历到子层次结构中以获得标签值,它工作得很好。但是子遍历代码使它有点混乱。类似的var startDateCont = registry.byId("startDateContainer");var startDateLabel = startDateCont.domNode.children[1].children[1].children[1].innerHTML;

在道场有其他的方法来实现这个????

如果您在小部件中使用这个,您甚至不应该使用id(或至少使用生成的id)。在使用小部件时获取DOM节点引用的最佳方法是使用附加点。例如,考虑以下HTML:

<label class="secondaryColor bold75Font floatRight" data-dojo-attach-point="startDateLabel">${startDate} </label>

正如您所看到的,我引入了一个名为data-dojo-attach-point的属性,它允许我为标签指定名称(类似于ID)。

然后在小部件内部,您现在可以通过使用:

轻松获得对该DOM节点的引用:
this.startDateLabel;

只是一些额外的信息,您还可以通过使用data-dojo-attach-event以类似的方式定义事件。请务必阅读编写您自己的小部件文章的这一部分。