属性selectedIndex在HTMLElement类型

时间:2016-08-24 15:34:20

标签: typescript

我试图将一些js文件转换为在asp.net webforms中使用typescript。 javascript可以工作但由于错误而无法在ts中编译。这是代码

 var mDropDownID = arySecondTier[x];
 var DropdownList = (document.getElementById("ctl00_ContentPlaceHolder1_lvCASec2_Detail_ctrl" + mDropDownID + "_ddlPoints"));
 var SelectedIndex = DropdownList.selectedIndex;

错误发生在selectedIndex行上。根据我用打字稿阅读的内容,HTMLElement上没有selectedIndex,我需要使用HTMLElement的子类型。如果是这种情况,我在查找该子类型的名称时会遇到问题。如果它是别的东西,那么我很想知道什么。

我已经看到有人将DropDownList转换为,但我首先想到的并不是你想要使用打字稿的原因。

由于

1 个答案:

答案 0 :(得分:10)

您只需让编译器DropdownList是一个选择元素:

var DropdownList = (document.getElementById("ctl00_ContentPlaceHolder1_lvCASec2_Detail_ctrl" + mDropDownID + "_ddlPoints")) as HTMLSelectElement;
 var SelectedIndex = DropdownList.selectedIndex; // no error

另外,你可以这样做:

`ctl00_ContentPlaceHolder1_lvCASec2_Detail_ctrl ${ mDropDownID } _ddlPoints`

而不是字符串连接。

修改

根据dom中的实际元素,您知道需要哪种类型的元素 如果您获得对脚本元素的引用,那么它必须是HTMLScriptElement,如果它是div然后是HTMLDivElement,依此类推。

MDN是一个很好的信息来源,但在这种情况下,我只需检查lib.d.ts(也应该从您的IDE中获取)以查看此元素的含义。
例如HTMLScriptElement有:

interface HTMLScriptElement extends HTMLElement {
    async: boolean;
    charset: string;
    defer: boolean;
    event: string;
    htmlFor: string;
    src: string;
    text: string;
    type: string;
}