Как зациклить на Dom.nodeList?

Следующее не будет работать, так как стороны Dom.nodeList а также DomTokenList.forEach ожидает Dom.domTokenList,

open Bs_webapi.Dom;

external length : Dom.nodeList => int = "" [@@bs.get];

let sides = Document.querySelectorAll "#carousel > figure" document;

DomTokenList.forEach (fun item _ => print_endline item) (sides);

1 ответ

Решение

Перефразировано из Раздора Разума, любезно предоставлено @anmonteiro:

Js.Array.forEach Js.log (NodeList.toArray sides);

Вот пример того, как setAttribute для каждого элемента в NodeList, Заметка, Element.ofNode может быть использован для преобразования Dom.node в option Dom.element,

open Bs_webapi.Dom;

external length : Dom.nodeList => int = "" [@@bs.get];

let sides = Document.querySelectorAll "#carousel > figure" document;

Js.Array.forEachi
  (fun side index =>
    switch (Element.ofNode side) {
    | Some element =>
      Element.setAttribute "style" "some style here" element
    | None => ()
    }
  )
  (NodeList.toArray sides)

https://bucklescript.github.io/bucklescript/api/Js_array.html

Другие вопросы по тегам