2016-02-21 534 views
7

我從Typescript中得到一個錯誤,我不知道如何糾正它。代碼工作正常時,「編譯」,但我不能糾正錯誤。我從代碼中提取了涉及錯誤的部分。我想我必須預測src,但不知道如何。在編輯器和上咕嘟咕嘟Typescript:屬性'src'在類型'HTMLElement'上不存在

錯誤味精編譯:

「屬性 'SRC' 上型不存在「HTMLElement'.at線53欄17"

... 

element:HTMLElement; /* Defining element */ 

''' 
this.element = document.createElement('img'); /*creating a img*/ 

''' 

這是我運行的方法來渲染元素,位置,頂部和左側的所有工作都不會發生錯誤。

display() { 
    this.element.src = this.file; /*This is the line that gives the error*/ 
    this.element.style.position = "absolute"; 
    this.element.style.top = this.pointX.toString() + "px"; 
    this.element.style.left = this.pointY.toString() + "px"; 

    document.body.appendChild(this.element); 
}; 
+0

實際上,'HTMLElement.prototype'沒有'src',但'HTMLImageElement.prototype'應該。我不知道TypeScript,但嘗試將'element'定義爲'HTMLImageElement'而不是'HTMLElement'。 – Oriol

+0

'this.element.setAttribute(「src」,this.file);'也可以。 –

+0

@ c-smile儘管我不認爲你的答案是正確的解決方案,但我確實很欣賞以不同方式處理問題的通知 –

回答

10

因爲src不是HTMLElement類型的屬性,而是HTMLImageElement

如果您確定你會得到一個img元素,你可能想用正確的亞型聲明你的變量:

element: HTMLImageElement; /* Defining element */ 

// ... 

this.element = document.createElement('img'); /*creating a img*/ 

此外,你可能想看看什麼document.createElement回報。如果您指定"img"作爲它的參數,則它是非常相同的類型。

+0

非常感謝你解決了我的問題,我只是假設HTMLElement是一個通用的DOM元素那適合所有。 –

+0

你的假設是完全正確的。一個'HTMLImageElement'實際上也是'HTMLElement'。更確切地說,它是一個子類型。但並非所有元素都包含'src'屬性,因此在這種情況下需要使用子類型。 –

+0

謝謝您的澄清 –

0

您需要將其聲明爲HTMLImageElement,其中有一個src屬性。

17

使用鑄造:

(<HTMLImageElement>document.querySelector(".company_logo")).src 
0
document.getElementById('img').setAttribute('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='); 

通過設置屬性方法Set源。

0

使用像@這樣的鑄造whereDatApp.com建議爲我工作。使用這樣的查詢選擇器:

querySelector("img[name='menubanner']") 
+0

[請格式化您的代碼](https://stackoverflow.com/editing-help) – Dwhitz

相關問題