问题用dojoAttachpoint而addding /删除风格

问题描述:

我有一个div,如下所示:问题用dojoAttachpoint而addding /删除风格

<div id="xyz" dojoAttachPoint="xyz" style="display: none;"> </div> 

现在我想显示/隐藏它。如果我使用dojo.byID进行操作。但是,如果我使用dojoAttachppoint执行它,它不能正常工作。我没有得到任何错误,但没有发生变化。

dojo.byId("xyz").style.display="none"; 
dojo.byId("xyz").style.display=""; 


this.xyz.style.display ="none"; 
this.xyz.style.display =""; 

可能是什么问题?

+0

那么,这是在'_Templated'中的一个小部件混合模板?我问,因为这是'dojoAttachPoint's被分析/连接的唯一地方。 – 2011-03-24 02:13:56

+0

这个问题似乎与dojoAttachPoint没有关系。 – 2011-03-24 04:40:55

+0

@Ken:是的,有一个模板和相应的js文件 – dojoX 2011-03-24 06:41:18

您是否正在使用dojo.declare和基类dijit._Templated声明的类中的模板中使用上述内容?

你对附着点的理解是片状的。当dijit._Templated分析模板时,以及当它看到“dojoAttachPoint”属性时,它将使用附加点的名称在dijit对象中创建一个属性。因此,“xyz”是dijit类对象中的一个属性。当模板正在读取时,该名称取自名为“dojoAttachPoint”的属性。之后不再使用dojoAttachPoint属性。

如果“这个”点到您创建的类的dijit,this.xyz将指向DOM元素(即股利),从来就不是一个小部件。因此它确实不是有一个“domNode”属性。跟踪dijit/_Templated.js line#191中的源代码进行确认。

因此,您需要做一些console.log调用以确认this.xyz正在返回正确的div。如果确实如此,那么你可以尝试dojo.style(this.xyz, "display", "none"),看看是否可以将其隐藏等

至于为什么this.xyz.style.display = "none"将无法​​正常工作,它可能是一个特定的浏览器的东西,因为它应该做同样的事情dojo.style。你需要深入挖掘才能发现。

+0

@Stephen:xyz in not property。它是dojoAttachpoint.So我的代码是this.myAttachpoint.style.display或this.myAttachpoint.domNode.style.display – dojoX 2011-03-24 06:42:45

+0

dojo.byId(“xyz”)就是用this.xyz替换,其中xyz是一个附加点。此外,我已经尝试使用this.xyz.innerHTML,它的工作原理 – dojoX 2011-03-24 06:44:17

+0

在这种情况下,您正在使用'dojo.declare'与基类'dijit._Templated'声明的类中的模板中使用上述?你为什么不在你的问题中这么说? – 2011-03-24 07:35:22