Этот код для расширения Chrome не работает, и я понятия не имею

Я работаю над этим небольшим расширением Chrome для веб-страницы Roblox, и по какой-то причине оно вообще не хочет работать должным образом.

ошибка

Uncaught TypeError: Cannot set property 'background' of undefined
at extension_update (themeManager.js:7)
at themeManager.js:14

и это код:

var colorOnePath = document.getElementsByClassName("navbar-fixed-top rbx-header");
var colorTwoPath = [document.getElementsByTagName("body"), document.getElementsByClassName("content")];    

var color = ["#008919", "#000000"];

function extension_update() {
    colorOnePath.style.background = color[0];
    colorTwoPath[0].style.background = color[1];
    colorTwoPath[1].style.background = color[1];

    setTimeout(1000, extension_update)
};

extension_update()

Я понятия не имею, почему код настроен так, но в любом случае есть ли проблема? Я не мог найти, где исправить. Спасибо!

1 ответ

getElementsByClassName всегда будет возвращать массив элементов в виде массива - даже если он только один. Так что в вашем коде вместо установки style.background свойство первого элемента в коллекции, вы пытаетесь установить его на саму коллекцию - так как коллекция не имеет style собственность, вы получаете ошибку, которую вы видите. Попробуйте изменить свой код на это:

var colorOnePath = document.getElementsByClassName("navbar-fixed-top rbx-header")[0];
var colorTwoPath = [document.getElementsByTagName("body")[0], document.getElementsByClassName("content")[0]];    

var color = ["#008919", "#000000"];

function extension_update() {
    colorOnePath.style.background = color[0];
    colorTwoPath[0].style.background = color[1];
    colorTwoPath[1].style.background = color[1];

    setTimeout(1000, extension_update);
}

extension_update();

(Я также позволил себе добавлять точки с запятой там, где они отсутствовали, и удалять их там, где они были не нужны).

Другие вопросы по тегам