2013-12-02 5 views
1

Я не могу правильно работать с моим кодом в Chrome, но когда я вставляю свой код в JSFIDDLE, он работает правильно. Я пытаюсь получить все теги ul в документе, используя getElementsByClassName, а затем все lis в пределах одного из uls. Когда я использую getElementsByClassName («ul»), он не находит ни одного в Chrome, однако, если я удалю либо один из двух div, прежде чем uls getElementsByClassName («ul») найдет все из них, так что divs, похоже, являются тем, что нарушает JS ,getElementsByClassName не находит uls

я не смог воспроизвести проблему в JSFIDDLE как код работал правильно там, но здесь это: http://jsfiddle.net/zTP9H/

var sElements = document.getElementsByClassName("HeaderWrapWide"); 
var catOne = document.getElementsByTagName("ul"); 
alert("number of ul: " + catOne.length); 

var liTags = catOne[3].getElementsByTagName("li"); 
alert("number of li: " + liTags.length); 

Благодаря

Alex

ответ

2

вы уверены, что вы работаете в этом JavaScript ПОСЛЕ добавления html на страницу? jsfiddle, вероятно, отображает html/scripts по-другому на вашей веб-странице и, следовательно, поэтому он работает там. Если ваш браузер в головной части вашего HTML вы могли бы хорошо иметь такое поведение - попробуйте использовать JQuery на документе готовой функции http://api.jquery.com/ready/ или переместить JS в нижней части страницы

Я не могу видеть ничего плохого с кодом

+0

Спасибо, перемещение main.js на дно исправили проблему. – Alex

0

Если вы хотите, чтобы выполнить код в <head></head>
, как у вас есть, то попробуйте оберточной свой код в
функции, как это, если вы не» t хочу использовать jQuery.
Кроме того, это не работает в IE так что проверить caniuse.com/#search=DOMContentLoaded

document.addEventListener('DOMContentLoaded', function() { 
    your code here. 
    }) 
Смежные вопросы