1

我正在尝试使用以下代码将有关输入的信息(包括输入 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属性,而我只想将它存储在数组中的对象中。

4

1 回答 1

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))

于 2013-03-05T20:36:08.133 回答