类型不匹配,需要的节点,找到的字符串

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)