смотрел вокруг, но не мог найти решение. Я не знаю, что делать, и надеялся, что кто-то сможет мне помочь. Я продолжаю получать эту ошибку:
Uncaught TypeError: Невозможно установить свойство "backgroundColor" неопределенного в header.js: 7
это мой js:
var today = new Date().getHours(); // Creërt een "new data object.
var color = document.getElementsByClassName('navbar');
// colors based on time of day
if (today >= 18) {
color.style.backgroundColor = 'pink';
} else if (today >= 12) {
color.style.backgroundColor = 'yellow';
} else if (today >= 0) {
color.style.backgroundColor = 'blue';
} else {
color.style.backgroundColor = 'black';
}
вот мой html на всякий случай:
<nav class="navbar">
<a href="home.html">
title
</a>
</nav>
и мой css:
.navbar {
vertical-align: middle;
padding: 0.5em 4em;
box-shadow: 0px 0px 15px -2px rgba(31, 31, 31, 0.75);
background: linear-gradient(to right, rgba(47, 132, 255, 1) 0%, rgba(110,236, 249, 1) 100%);}
Надеюсь, кто-нибудь может помочь.
Почему бы не использовать .getElementById()
поскольку это будет выбирать только один элемент.
Код для этого будет выглядеть следующим образом.
var today = new Date().getHours(); // Creërt een "new data object.
var color = document.getElementById('navbar');
// colors based on time of day
if (today >= 18) {
color.style.backgroundColor = 'pink';
} else if (today >= 12) {
color.style.backgroundColor = 'yellow';
} else if (today >= 0) {
color.style.backgroundColor = 'blue';
} else {
color.style.backgroundColor = 'black';
}
<nav id="navbar">
<a href="home.html">title</a>
</nav>
document.getElementsByClassName('navbar')
возвращает массив. Если у вас есть только одна навигационная панель, вы можете использовать document.getElementsByClassName('navbar')[0];
, который предоставит вам первый экземпляр, но это не лучшая практика.
Или, и лучше, вы можете использовать document.getElementById('navbar')
и дать вашему navbar идентификатор navbar вместо класса.
Надеюсь, это поможет! Все, что вы делаете, должно работать.
document.getElementsByClassName('navbar')[0]
. Так это все, что вам нужно?
document.getElementsByClassName('navbar');
Эта строка кода возвращает HTMLCollection (Array). Вы должны перебирать коллекцию для style.backgroundColor
getVyClassName
возвращает массив. Вы должны выбрать один / все элементы этого массива и применить к нему стиль.