maler1988
@maler1988
Web-программист (1С Bitrix)

Почему JS не находит свойство color у элемента в теле страницы?

Читаю умную книгу по JS, там есть пример по работе с контекстом. Вот такой код работает нормально:

function changeColor(color) {
	this.style.color = color;
}

var block = document.createElement('div');

changeColor.call(block, 'black');

console.log(block);

//В консоли выводит <div style="color: black"></div>


а вот если в переменную block сохранить уже существующий в теле страницы элемент вот так:

var block = document.getElementsByClassName('jumbotron');


то код выдаёт ошибку, ругаясь на функцию changeColor мол нет такого свойства color Uncaught TypeError: Cannot set property 'color' of undefined at HTMLCollection.changeColor . Вопрос почему? И там и там обычный контейнер div и то и то объекты? Что не так, не уловлю.
  • Вопрос задан
  • 1264 просмотра
Решения вопроса 1
abyrkov
@abyrkov
JavaScripter
Потому, что document.getElementsByClass возвращает HTMLCollection
HTMLCollection не Element, свойства style не имеет. А попытка получить значение, не имеющееся в объекте возвращает undefined. А попытка получить свойство у undefined завершается ошибкой.
Правильно будет вот так:
var block = document.getElementsByClassName('jumbotron')[0];
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы