2017-01-14 129 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操作。这些实用功能仅用于简化初始化卤素应用程序。

相关问题