我在循环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'。
如何使用TypeScript获取select
答案 0 :(得分:0)
在相关行中尝试这些更改。
//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];
答案 1 :(得分:0)
这就是我的工作原理:使用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());
}
}
}