2014-11-16 2 views
1

Это не работает. У меня есть элемент в моем html с id "color". В чем дело? Я просто хочу, чтобы он добавил к классу этого элемента.Невозможно прочитать свойство 'className' of null

var el = document.getElementById("color"); 
var number = Math.floor((Math.random() * 5) + 1); 

switch (number) { 
    case 1: 
     el.className += " blue"; 
     break; 

    case 2: 
     el.className += " yellow"; 
     break; 

    case 3: 
     el.className += " red"; 
     break; 

    case 4: 
     el.className += " green"; 
     break; 

    case 5: 
     el.className += " purple"; 
     break; 
} 
+0

Выполняется ли сценарий до загрузки документа? –

+0

Вы запускаете это до загрузки DOM? – Scimonster

ответ

6

Я бы сказал, что это происходит от того, что тело не загружается при попытке получить #color элемент.

Просто заверните вещь в этом

window.onload = function() { 
    // your code 
}; 

Или вы можете загрузить свой код в конце тела

<body> 
    <!-- you content --> 
    <script src="your-script.js"></script> 
</body> 

И, наконец, вы можете слушать для DOMContentLoaded события. Это немного быстрее, чем window.onload, но немного меньше поддержки, IE9 +.

document.addEventListener("DOMContentLoaded", function(event) { 
    // your code 
}); 
+0

@Jonathan Хорошее предложение, хотя я мог бы обновить свой ответ, если бы вы прокомментировали: p – axelduch

+0

На странице с большим количеством изображений подключение к событию DOMContentLoaded на самом деле намного быстрее, чем onLoad. –

+0

@ Ja͢ck Полезно знать, спасибо – axelduch

0

Я объявила переменную «el», которая не входит в сферу действия переключателя.

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