类型不匹配,需要的节点,找到的字符串
Type mismatch, required node, found string
尝试在 HTML Builder
点按 Kotlin
站点使用代码段,所以我写了以下内容:
val tbl = createHTML().table {
for ((num, string) in data) {
tr {
td { +"$num" }
td { +string }
}
}
}
document.getElementById("container")!!.appendChild(tbl)
但是 IDE 是 tbl
的基础,错误如下:
我在这里犯了什么错误?
createHtml()
生成一个字符串,不能传递给 appendChild()
。您应该改用
val tbl = document.create.table {
...
}
它生成一个 HTMLElement(它是一个节点)或者直接跳过变量。
document.getElementById("container")!!.append.table {
...
}
createHTML().xxx
最好与服务器 Ktor.io
一起使用,您可以在其中创建如下内容:
val html = createHTML().html {
body {
form(action = "/login", encType = FormEncType.applicationXWwwFormUrlEncoded, method = FormMethod.post) {
p {
+"user:"
textInput(name = "user") {
value = principal?.name ?: ""
}
}
p {
+"password:"
passwordInput(name = "pass")
}
p {
submitInput() { value = "Login" }
}
}
}
}
然后使用以下方式将其发送到浏览器:
call.respondText(html, ContentType.Text.Html)
尝试在 HTML Builder
点按 Kotlin
站点使用代码段,所以我写了以下内容:
val tbl = createHTML().table {
for ((num, string) in data) {
tr {
td { +"$num" }
td { +string }
}
}
}
document.getElementById("container")!!.appendChild(tbl)
但是 IDE 是 tbl
的基础,错误如下:
我在这里犯了什么错误?
createHtml()
生成一个字符串,不能传递给 appendChild()
。您应该改用
val tbl = document.create.table {
...
}
它生成一个 HTMLElement(它是一个节点)或者直接跳过变量。
document.getElementById("container")!!.append.table {
...
}
createHTML().xxx
最好与服务器 Ktor.io
一起使用,您可以在其中创建如下内容:
val html = createHTML().html {
body {
form(action = "/login", encType = FormEncType.applicationXWwwFormUrlEncoded, method = FormMethod.post) {
p {
+"user:"
textInput(name = "user") {
value = principal?.name ?: ""
}
}
p {
+"password:"
passwordInput(name = "pass")
}
p {
submitInput() { value = "Login" }
}
}
}
}
然后使用以下方式将其发送到浏览器:
call.respondText(html, ContentType.Text.Html)