Select在TypeScript中没有options属性

时间:2017-11-02 09:28:00

标签: javascript typescript

我在循环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

2 个答案:

答案 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());
        }
    }
}