在js_of_ocaml中,是否可以获取Dom_html.element
的子节点?
我知道该类继承了Dom.node
,因此具有childNodes
方法。但是,由于它是Dom.node
中的方法,因此它返回Dom.node
类型的值。而且我需要这些节点仍然为Dom_html.element
,否则大多数方法将不可用。
由于在OCaml中无法进行向下转换,因此我找不到此问题的任何可能的解决方案。我是否缺少某些东西,或者这真的不可能吗?
答案 0 :(得分:1)
childNodes
不能被键入为Dom_html.element
的集合,因为返回的节点可以而且很可能包括非element
的节点,例如文本节点
DOM标准在children
上定义了一个属性Element
,该属性只会返回元素,但仍然不能使您进入Dom_html.element
。不幸的是,它似乎也未包含在JSOO的Dom.element
中。
您可以使用Dom.CoerceTo
的element
函数将Dom.node
s强制转换为Dom.element
s,但是我认为没有一般可靠的方法从Dom.element
到Dom_html.element
,因为不幸的是DOM是太动态地键入的。
您可能必须手动检查tagName
,然后(不安全地)使用Js.Unsafe.coerce
进行投射。