Kotlin JS – 访问HTML DOM属性

在Kotlin中访问HTML DOM属性的规范方法是什么? 我没有看到一些像ElementoffsetHeightoffsetWidth这样的dom属性

 var e : Element? = document.getElementById("text") e.offsetHeight //Error 

只要将e HTMLElementHTMLElement ,就可以获得所有您期望的属性。

 (e as HTMLElement).offsetHeight 

这不是Kotlin的一个特性,我在一个普通的JS文档中找到了这个: https : //developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight

因为Kotlin和JavaScript在内部是完全不同的,所以你有权要求一种“规范”的方式去做事情。 这里是我将如何做你的代码片段:

 val e = document.getElementById("text")!! as HTMLElement e.offsetHeight 
  1. 在代码中使用val而不是var 。 它声明了一个固定的引用,并允许一些代码优化。 http://kotlinlang.org/docs/reference/properties.html#properties-and-fields

  2. 不要使用像Element?这样的可空类型Element? 如果你不需要它。 在这种情况下,您可能非常确定您的DOM结构,所以getElementById("text")必须返回一个元素,而不是null。 放一个断言!! 那里容易您的头脑。 如果你的JS和一个未知的html一起工作,我会更好地处理这种情况:

     val e = document.getElementById("text") as? HTMLElement ?: throw RuntimeException("the DOM has no 'text' id")