2017-01-14 131 views
2

purescript-halogen中是否有一個函數用於選擇它的id中的元素,還是我需要自定義角色(它對我來說看起來很奇怪)。在Purescript中通過Id選擇元素

我正在閱讀Pursuit上的文檔,我在Util中看到selectElement函數,但在我看不到有什麼東西可以讓我通過id進行選擇。

我可以使用getElementById :: ElementId -> NonElementParentNode -> Eff() (Nullable Element)獲得Element,但我不知道如何將此Element轉換爲HTMLElement

Pursuit中的類型搜索功能也很缺乏,所以我對這個天真的問題表示歉意。

+0

您無法安全地將'Element'轉換爲'HTMLElement'。嘗試'selectElement「#id」'。但更好的方法是在'Halogen.VDom.Driver.runUI'的簽名中將'HTMLElement'更改爲'Node',因爲鹵素稍後不需要'HTMLElement'。 –

回答

2

這不是你應該在使用虛擬DOM的庫時通常應該做的事情,因爲如果通過id保存對元素的引用,它可能會導致陳舊並引用完全不同的元素或元素不再附加到DOM。

獲取元素的方法是使用ref,有一個使用它的例子in this section of the guide。它的作用類似於事件處理程序,每當元素出現或被刪除時,組件上都會產生查詢。如果您使用更新組件狀態中的引用的查詢,則可以確定知道您始終擁有所需的實際元素(如果因某種原因而不存在,則爲Nothing)。

如果你真的想使用getElementById然後it is available from purescript-dom。它不是鹵素燈的一部分,因爲鹵素燈不適用於一般用途的DOM操作。這些實用功能僅用於簡化初始化鹵素應用程序。

相關問題