是什么意思是HTMLInputElement类型中缺少属性'setSelectionRange'

时间:2013-03-05 20:26:04

标签: typescript

我正在尝试使用以下代码在数组中存储有关输入的信息,包括输入DOM对象本身。

export class SelectionOtherInputDescriptor {
    constructor(public selectionName: string, public otherKey: any, public otherInputElement: HTMLInputElement) { }
}
export class SelectionOtherInputHelper {
    selectionsWithOther: { [selectionKey: string]: SelectionOtherInputDescriptor; } = {};
    getAllSelectionOthers() {
        var things = $("[" + ATT_SELECTION_OTHER_FOR + "]");           
        for (var i = 0; i < things.length; i++) {         
            var selectionName = $(things[i]).attr(ATT_SELECTION_OTHER_FOR);
            var desc = new SelectionOtherInputDescriptor(selectionName, 0, $(things[i]));
            this.selectionsWithOther[selectionName] = desc;
        };
    };
}

在线

var desc = new SelectionOtherInputDescriptor(selectionName, 0, $(things[i]));

我收到编译错误:

  

类型'JQuery'缺少类型的属性setSelectionRange   'HTMLInputElement'

为什么我自己的SelectionOtherInputDescriptor对象要求HTMLInputElement参数需要setSelectionRange属性,而我只想将它存储在数组中的对象中。

1 个答案:

答案 0 :(得分:1)

$(things[i])返回一个JQuery对象,但是你的类想要一个HTML元素。观察:

<input id="foo">
   ....
var x = $('#foo');
console.log(x); // 'JQuery'
console.log(x.get(0)); '<input id="foo">

如图所示,您需要致电get。由于这只是一个HTMLInputElement,您还需要键入 - 断言结果:<HTMLInputElement>($(things[i]).get(0))