2011-03-23 49 views
0

我有一個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

回答

1

您是否正在使用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