2016-07-21 15 views
0

私はScalaJSを使用しており、HTML input要素の値を読みたいと思います。ここでScalaJs 0.9:jQueryを使用せずにHTML入力値を取得する

は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 

として、コンパイルされません。 valueの属性がorg.scalajs.dom.raw.Elementであることを確認してください。

公式にはbasic tutorialがjQueryにすぐに使用されますが、私は小さな概念証明に取り組んでいるので、避けています。私は、DOM APIだけを使う方法があると確信しています。

EDIT:

が、私は文字列を返すnodeValue方法を発見した文書を通って行きます。 「ほとんどのノードタイプ」ではnullとなっています。 Mineはnumberであり、実際には実行時に失敗し、nullが返されます。 別の編集:テキスト入力の場合もnullを返します。

この時点で私はちょっと困惑しています。

おかげで、 ピエトロ

答えて

4

は、私はあなたがフェッチしている要素(nodeValue)が<input>要素であると仮定します。

getElementByIdどのような種類の要素がnodeValueであるかわかりません。これを理解するために.htmlへのアクセス権がないため、非常に汎用的なElementを返します。しかし、実際には、の入力の要素、つまりorg.scalajs.dom.html.Inputです。あなたは.asInstanceOf[html.Input]とコンパイラにそれを伝えることができます。汎用にはvalueというプロパティはありません。Inputしかありません。

import org.scalajs.dom.html 

val nodeValue = document.getElementById("nodeValue").asInstanceOf[html.Input].value.toInt 
+1

scalajsで直接htmlを生成する方が良いでしょうか?スカタグと同様? – gurghet

+0

ありがとう、働いています! – pietro909

関連する問題