获取Dom_html.element的子级

时间:2019-07-01 01:04:35

标签: dom ocaml js-of-ocaml

在js_of_ocaml中,是否可以获取Dom_html.element的子节点?

我知道该类继承了Dom.node,因此具有childNodes方法。但是,由于它是Dom.node中的方法,因此它返回Dom.node类型的值。而且我需要这些节点仍然为Dom_html.element,否则大多数方法将不可用。

由于在OCaml中无法进行向下转换,因此我找不到此问题的任何可能的解决方案。我是否缺少某些东西,或者这真的不可能吗?

1 个答案:

答案 0 :(得分:1)

childNodes不能被键入为Dom_html.element的集合,因为返回的节点可以而且很可能包括非element的节点,例如文本节点

DOM标准在children上定义了一个属性Element,该属性只会返回元素,但仍然不能使您进入Dom_html.element。不幸的是,它似乎也未包含在JSOO的Dom.element中。

您可以使用Dom.CoerceToelement函数将Dom.node s强制转换为Dom.element s,但是我认为没有一般可靠的方法从Dom.elementDom_html.element,因为不幸的是DOM是太动态地键入的。

您可能必须手动检查tagName,然后(不安全地)使用Js.Unsafe.coerce进行投射。