2017-01-18 10 views
-1

Я работаю над этим небольшим расширением chrome для веб-страницы Roblox, и по какой-то причине он не хочет нормально работать.Этот код для расширения chrome не работает, и у меня нет Idea

ошибка

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() 

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

+0

примечание - 'document.getElementsByTagName (" body ") [0]' === 'document.body' –

ответ

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(); 

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

+0

' colorOnePath.style.background [0] '? вы имеете в виду 'colorOnePath [0] .style.background': p - лично я бы добавил' [0] 'ко всем результатам' getElementsBy * ' –

+0

@JaromandaX - хороший улов и хорошая рекомендация - обновлено соответственно - спасибо ! –

+0

еще один 'document.getElementsByTagName (" body ") [0]' === 'document.body': p –