尽管我的代码可以工作(如下所示),但typescript正在抛出错误,表示“类型“htmlElement”上不存在属性“style”。
如您所见,我正在通过jquery获取元素&元素的id。
$(this.id).click(function () {
this.style.display = 'none';
});
但这会导致以下错误:
`TS2339: Property 'style' does not exist on type 'HTMLElement'`.
我不确定什么是处理这个ts错误的正确方法。
有人能告诉我吗?
提前谢谢你。
更多代码,因为它是被请求的:
`/**
* Class represents a flash message
*/
export class FlashMessage {
flashMessageParentDivID:string;
iconID:string;
textID:string;
$: JQuery;
/**
*
* @param {string} flashMessageParentDiv - the string of the div's ID.
*/
constructor (flashMessageParentDiv: string, $: JQuery) {
this.flashMessageParentDivID = "#"+flashMessageParentDiv;
this.iconID = "#flash-message-icon",
this.textID = "#flash-message-text";
this.$ = $;
}
/**
* Displays the passed in message with the appropriate status.
* @param {string} message - the message we want to flash.
* @param {string} status: either 'error' or 'success'
*/
showWithMessage = function (message: string, status: string) {
//@todo: maybe throw an error if status does not equal error or success.
this.clearAndCreateFlashMessageInnerds();
this.$(this.flashMessageParentDivID).removeAttr("class");
this.$(this.flashMessageParentDivID).addClass(status);
this.$(this.iconID).removeAttr("class");
this.$(this.iconID).addClass("k-icon k-i-" + status);
this.$(this.textID).text(message);
this.$(this.flashMessageParentDivID).show();
this.$(this.flashMessageParentDivID).click(function () {
(<any>this).style.display = 'none';
});
};
……`
最佳答案
在你的方法中使用这个
(<HTMLElement>document.querySelector('#yourDomElmentID')).style.display = 'none';
我在我的代码中成功地测试了你的代码及其编译。