2016-02-21 4 views
7

Я получаю сообщение об ошибке из Typcript, и я не уверен, как его исправить. Код работает отлично, когда «скомпилирован», но я не могу исправить ошибку. Я извлек части, которые связаны с ошибкой моего кода. Я предполагаю, что мне нужно предсказать src, но не знаю, как это сделать.Тип машинописи: свойство '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=='); 

Набор источника через набор атрибутов метода.

0

Использование отливки, например @ whereDatApp.com, предлагалось работать для меня. Используя селектор запроса, как это:

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

[Пожалуйста, отформатируйте свой код] (https://stackoverflow.com/editing-help) – Dwhitz

Смежные вопросы