我的 html 文件上有一个复选框。
<input id="is3dCheckBox" type="checkbox" checked="checked" />
我想知道 .ts 文件中是否选中了此复选框。
获取此元素后应该执行什么转换才能检查它?
你只需要使用一个类型断言 https://www.typescriptlang.org/docs/handbook/basic-types.html#type-assertions告诉 TypeScript 它是一个 HTMLInputElement:
var element = <HTMLInputElement> document.getElementById("is3dCheckBox");
var isChecked = element.checked;
Update:
任何想法为什么 var element = document... 有效但是
var element: HTMLInputElement = document... 不是吗?
当你使用getElementById
返回的元素可以是任何类型的 HTML 元素。例如,它可以是段落标签。因此,该 DOM 方法的类型定义返回一个非常通用的HTMLElement
type.
当您尝试以下操作时:
var element: HTMLInputElement = document.getElementById('is3dCheckBox');
编译器会警告您以下结果getElementById
不是一个HTMLInputElement
,或子类型HTMLInputElement
(因为它实际上是您想要的超类型)。
当您知道元素类型时,使用类型断言告诉编译器类型是完全正常的。当您使用类型断言时,您告诉编译器您更了解。
在某些情况下,编译器会still在使用类型断言时警告您,因为它可以告诉您该断言可能是一个错误 - 但您仍然可以强制它,但首先扩大类型:
var isChecked = (<HTMLInputElement><any>myString).checked;
字符串变量被扩展为any
类型,在断言之前HTMLInputElement
。希望您不需要经常使用这种类型断言。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)