Kotlin Javascript:分配给事件处理程序内的元素 属性 给出 "Expected a value of type dynamic"
Kotlin Javascript: Assigning to element property inside event handler gives "Expected a value of type dynamic"
我正在使用 Kotlin Javascript 转译。
我有这个功能可以在文本区域更改时编辑 div 的内容。
fun doStuff()
{
val div = document.createElement("div") as HTMLDivElement
val textarea = document.createElement("textarea") as HTMLTextAreaElement
textarea.onchange = {
div.innerHTML = "5"
}
div.innerHTML = textarea.value
}
div.innerHTML = "5"
的行有一个错误 "Expected a value of type dynamic",但是 div.innerHTML = textarea.value
从来没有错误。
为什么我在 onchange 处理程序中得到 "Expected a value of type dynamic",即使在事件处理程序之外的同一行代码不会给出错误?
原来是我错误地设置了事件处理程序。除了分配给 .onchange =
,您还可以使用:
textarea.addEventListener("keyup", {
event : Event -> Unit
...
}
关于我之前的代码的一些事情创建了一个不接受赋值代码的闭包。
为了更清楚一点,这里的问题是什么:
.onchange
(或任何其他事件方法)需要一个 {(Event)->dynamic}?
作为参数。
因此,如果您插入一个 lambda,您的最后一行将用作 return 值。将您的代码更改为以下内容也可以:
textarea.onchange = {
div.innerHTML = "5"
Unit
}
我正在使用 Kotlin Javascript 转译。
我有这个功能可以在文本区域更改时编辑 div 的内容。
fun doStuff()
{
val div = document.createElement("div") as HTMLDivElement
val textarea = document.createElement("textarea") as HTMLTextAreaElement
textarea.onchange = {
div.innerHTML = "5"
}
div.innerHTML = textarea.value
}
div.innerHTML = "5"
的行有一个错误 "Expected a value of type dynamic",但是 div.innerHTML = textarea.value
从来没有错误。
为什么我在 onchange 处理程序中得到 "Expected a value of type dynamic",即使在事件处理程序之外的同一行代码不会给出错误?
原来是我错误地设置了事件处理程序。除了分配给 .onchange =
,您还可以使用:
textarea.addEventListener("keyup", {
event : Event -> Unit
...
}
关于我之前的代码的一些事情创建了一个不接受赋值代码的闭包。
为了更清楚一点,这里的问题是什么:
.onchange
(或任何其他事件方法)需要一个 {(Event)->dynamic}?
作为参数。
因此,如果您插入一个 lambda,您的最后一行将用作 return 值。将您的代码更改为以下内容也可以:
textarea.onchange = {
div.innerHTML = "5"
Unit
}