2016-07-21 3 views
0

저는 ScalaJS를 사용하고 있으며, HTML input 요소의 값을 읽고 싶습니다. 여기 ScalaJs 0.9 : jQuery없이 HTML 입력 값 받기

는 HTML 코드입니다 :

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

그리고 이것은 스칼라 코드입니다, 내가 할 수있는 문서에서

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

로,

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

그것은 컴파일되지 않습니다 value 속성이 org.scalajs.dom.raw.Element 인 것을 찾으십시오.

공식적으로 basic tutorial에서는 jQuery를 즉시 사용하지만 작은 개념 증명 작업을하고 있으므로 피할 수 있습니다. DOM API 만 사용하는 방법이 있다고 확신합니다.

편집 : 문서를 통해가는

나는 문자열을 반환 nodeValue 방법을 발견했다. 그것은 "대부분의 노드 유형"에 대해서는 null입니다. 광산이 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을 생성하는 것이 좋을까요? scalatags와 마찬가지로? – gurghet

+0

감사합니다! – pietro909