在 Scala.js 中,如何切换 class 中元素的可见性?

In Scala.js, how do I toggle visibility of elements in a class?

在 Scala.js 程序中,我想在 class "my-img" 中切换 HTML 页面上所有元素的可见性。我目前拥有的是

import org.scalajs.dom
import dom.document

val elems: dom.NodeList = document.getElemsByClassName("my-img")
for (i <- 0 until elems.length) {
   val e: dom.Node = elems(i)
   e.style.display = "none"  <-- this chokes, says style is not a member of Node

此时我正在尝试访问节点的样式成员,根据 Javascript 文档应该存在,但是 Scala.js 给我一个错误。

(请注意,这是一个 Javascript 问题,而不是一个 Scala.js 问题本身。)

有几个答案,具体取决于您是否愿意包含 jQuery 库。这是 Javascript 世界中一个有点沉重但极其常见的库,它也经常用于 Scala.js 编程。这不是必需的,但它使这类事情变得容易得多。

这个库有两个流行的 Scala.js "facades"(Scala 描述);我写了其中一个,jquery-facade。如果你把它拉进来(如该页面所述),问题变得相当微不足道:

import org.querki.jquery._

// Fetch all of the nodes. jQuery uses CSS selectors, more or less,
// so this means "everything with class my-img".
val myImgs = $(".my-img")
// Hide all of them. myImgs is a JQuery object -- a wrapper around
// all of those nodes -- so a single call hides all of them:
myImgs.hide()
// Or show them:
myImgs.show()

未经测试(我今天正在与流感作斗争,所以请原谅我的任何错误),但我认为它应该有效...