HTML页面中有一个表单:
<form id="mainForm">
<input type="text">
</input>
</form>
我可以通过
在scala.js中解决这个问题dom.document.getElementById("mainForm")
接下来我想打电话
.send()
在表单上提交。但是,“send()”不可用作
.getElementById()
从上面返回“Element”而不是“HTMLFormElement”,因此“send()”不可用。
如何以“HTMLFormElement”形式获取/访问表单?
答案 0 :(得分:2)
总的来说,这种外部知识必须手动注入。最简单的版本是:
dom.document.getElementById("mainForm").asInstanceOf[HTMLFormElement]
是的,这有点蹩脚,但它通常发生在JavaScript / HTML和Scala.js之间的接口上:由于JS / HTML级别是无类型的,并且Scala级别是强类型的,因此您必须手动告诉Scala代码你期望的东西是什么类型。
如果你正在做很多这样的事情,有办法半自动化它(例如,检查标签,确定它是一个FORM并根据它进行演员),但这有点高-level - getElementById
是一个原始的DOM操作,Scala.js故意不向它添加额外的语义。
(许多Scala.js应用程序通过在程序本身中构建HTML来避免这种情况,因此它从一开始就是强类型的。)