如何以 Scala.js "HTMLFormElement" 的形式访问 HTML 表单元素(以便在其上调用 "post()")?
How to access an HTML form element as Scala.js "HTMLFormElement" (in order to call "post()" on it)?
HTML 页面中有一个表单:
<form id="mainForm">
<input type="text">
</input>
</form>
我可以通过
在 scala.js 中处理该表格
dom.document.getElementById("mainForm")
接下来我要打电话给
.send()
在表单上提交。但是,"send()" 不可用,因为
.getElementById()
从上面 returns 一个 "Element" 而不是 "HTMLFormElement",因此 "send()" 不可用。
如何 get/access 表格 "as" 和 "HTMLFormElement"?
总的来说,这种外部知识必须手动注入。最简单的版本是:
dom.document.getElementById("mainForm").asInstanceOf[HTMLFormElement]
是的,这有点蹩脚,但它经常发生在 JavaScript / HTML 和 Scala.js 之间的接口:因为 JS/HTML 级别是无类型的,并且Scala 级别是强类型的,你必须手动告诉 Scala 代码你期望什么类型。
如果你经常做这种事情,有一些方法可以半自动化(例如,检查标签,确定它是一个 FORM 并根据它进行转换),但这是更高级别 - getElementById
是原始 DOM 操作,并且 Scala.js 有意不向其添加额外的语义。
(许多 Scala.js 应用程序通过在程序本身中构建 HTML 来避免这种情况,因此它从一开始就是强类型的。)
HTML 页面中有一个表单:
<form id="mainForm">
<input type="text">
</input>
</form>
我可以通过
在 scala.js 中处理该表格dom.document.getElementById("mainForm")
接下来我要打电话给
.send()
在表单上提交。但是,"send()" 不可用,因为
.getElementById()
从上面 returns 一个 "Element" 而不是 "HTMLFormElement",因此 "send()" 不可用。
如何 get/access 表格 "as" 和 "HTMLFormElement"?
总的来说,这种外部知识必须手动注入。最简单的版本是:
dom.document.getElementById("mainForm").asInstanceOf[HTMLFormElement]
是的,这有点蹩脚,但它经常发生在 JavaScript / HTML 和 Scala.js 之间的接口:因为 JS/HTML 级别是无类型的,并且Scala 级别是强类型的,你必须手动告诉 Scala 代码你期望什么类型。
如果你经常做这种事情,有一些方法可以半自动化(例如,检查标签,确定它是一个 FORM 并根据它进行转换),但这是更高级别 - getElementById
是原始 DOM 操作,并且 Scala.js 有意不向其添加额外的语义。
(许多 Scala.js 应用程序通过在程序本身中构建 HTML 来避免这种情况,因此它从一开始就是强类型的。)