javascript - 在 TypeScript 中 Select 没有 options 属性
我在循环 TypeScript 数组时遇到问题。这些方法是:
getNotification(evt: string, rowIndex: number) {
console.log("Production order: law has changed to " + evt + " " + rowIndex);
var select = document.getElementsByName("ProductId-" + rowIndex);
this.removeOptions(select);
if ((evt != null) && (evt != "")) {
let productsByLaw: IProduct[];
productsByLaw = this.products.filter(x => x.lawId == +evt);
for (let product in productsByLaw) {
select.options[select.options.length] = new Option(product.name, product.productid);
}
}
}
removeOptions(selectbox : any) {
var i;
for (i = selectbox.options.length - 1; i >= 0; i--) {
selectbox.remove(i);
}
}
我不确定 var select=document.getElementsByName("ProductId-" + rowIndex); 是否是获取 HTML select 的正确方式,因为当我执行 select.options[select.options.length] 时,我得到了这个编译时错误:
错误 TS2339 (TS) 类型 'NodeListOf' 上不存在属性 'options'。
我如何用 TypeScript 获取一个 select?
答案#1
在相关行中尝试这些更改。
//line 3
var select = (document.getElementsByName("ProductId-" + rowIndex)[0]);
removeOptions(selectbox : any) {
var i;
for (i = selectbox.length - 1; i >= 0; i--) {
selectbox.remove(i);
}
}')[0];
答案#2
这是我让它工作的方式:使用 HTMLSelectElement。
getNotification(evt: string, rowIndex: number) {
let id: string = "ProductId-" + rowIndex;
let select: HTMLSelectElement = <HTMLSelectElement>document.getElementById(id);
this.removeOptions(select);
if ((evt != null) && (evt != "")) {
let productsByLaw: IProduct[];
productsByLaw = this.products.filter(x => x.lawId == +evt);
for (let product of productsByLaw) {
select.options[select.options.length] = new Option(product.name, product.productId.toString());
}
}
}
