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

ScalaJs 0.9: getting HTML input value without jQuery

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

这是 HTML 代码:

<input id="nodeValue" type="number" step="1" />

这是 Scala 代码:

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

它无法编译,因为

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

在文档中,我找不到 org.scalajs.dom.raw.Elementvalue 属性。

在官方 basic tutorial 中,它立即用于 jQuery,但我会避免使用它,因为我正在研究一个小的概念证明。我确定有一种方法可以只使用 DOM API.

编辑:

通过文档我找到了 nodeValue 方法,其中 returns 一个字符串。它说虽然那是 null for "most node types"。 我的是 number 并且确实在运行时失败,返回 null。 另一个编辑:它 returns null 也用于文本输入。

此时我感到有点迷茫。

谢谢, 彼得罗

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

getElementById不知道nodeValue是什么元素。它无法访问 .html 来解决这个问题,因此它 returns 是一个非常通用的 Element。但实际上,you 知道它是一个 input 元素,即 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