我试图将一些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转换为,但我首先想到的并不是你想要使用打字稿的原因。
由于
答案 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;
}