ScalaJs 0.9:在没有jQuery的情况下获取HTML输入值

pie*_*909 1 html scala scala.js

我正在使用ScalaJS,我想读取HTML input元素的值。

这是HTML代码:

<input id="nodeValue" type="number" step="1" />
Run Code Online (Sandbox Code Playgroud)

这是Scala代码:

object TutorialApp extends JSApp {
    // ...
    def addNode() = {
        val nodeValue = document.getElementById("nodeValue").value.toInt
    }
}
Run Code Online (Sandbox Code Playgroud)

它不编译,因为

[error] TutorialApp.scala:42: value value is not a member of org.scalajs.dom.raw.Element
[error]     val nodeValue = document.getElementById("nodeValue").value.toInt
Run Code Online (Sandbox Code Playgroud)

在文档中,我找不到的value属性org.scalajs.dom.raw.Element

在官方的基本教程中,它可立即用于jQuery,但由于正在研究一个小的概念证明,因此我会避免使用它。我敢肯定有一种方法可以只使用DOM API。

编辑:

浏览文档时,我发现了nodeValue返回字符串的方法。它说虽然是null针对“大多数节点类型”的。Mine number在运行时确实失败,并且返回null。另一个编辑:它也返回null文本输入。

在这一点上,我感到有些困惑。

谢谢,Pietro

sjr*_*jrd 5

我假设您要获取的元素(nodeValue)是一个<input>元素。

getElementById不知道是什么样的元素nodeValue。它无权访问.html来解决这个问题,因此它返回非常通用的Element。但实际上,知道这是一个输入元素,即一个org.scalajs.dom.html.Input。您可以使用告诉编译器.asInstanceOf[html.Input]。泛型Element没有value属性,只有Input拥有。

import org.scalajs.dom.html

val nodeValue = document.getElementById("nodeValue").asInstanceOf[html.Input].value.toInt
Run Code Online (Sandbox Code Playgroud)