2015-04-04 2 views
3

Это очень простой html-документ с js-скриптом.Javascript Array Elements Возврат undefined

... 
<script type = "text/javascript"> src = "xxx.js"></script> 
... 

<body> 
    <ul id ="pics"> 
    <li><a href="A.jpg">A</a></li> 
    <li><a href="A.jpg">A</a></li> 
    <li><a href="A.jpg">A</a></li> 
    </ul> 
</body> 

файл JS является:

var picspics = document.querySelectorAll("#pics ul > li > a"); 
alert(picspics[0]); 

Но он вернулся неопределен, так или иначе, если только бдительные picspics, он возвращает "объект нодлист", что звучит хорошо.

Сначала я думал, что это проблема, дом загрузки, так что я добавил

window.onload(){} 

вне моего кода, который также не удалось.

Все началось с того, когда я попытался использовать цикл для повторения всех элементов li и добавил событие onclick, которое показывает в консоли Chrome, что массив элемента a не определен, поэтому я попытался его отладить с функцией предупреждения.

После этого я попытался отсоединить файл js, просто загрузил html в chrome, а затем введите js-код в консоли, он также потерпел неудачу, как ожидалось, что я предлагаю сделать то же самое с функцией window.onload ,

В любом случае, в чем моя вина? Должна ли переменная picspics возвращать массив содержит 3 элемента? Тогда как первый элемент не определен?

Thnx.

ответ

2

Запрос вы обеспечиваете это var picspics = document.querySelectorAll("#pics ul > li > a"); но picsявляетсяul. Измените его на:

var picspics = document.querySelectorAll("ul#pics > li > a"); 
+0

thnx, у меня недостаточно репутации для голосования, но спасибо. –

+0

В любое время! Рад, что смог помочь! :) – Dom

1

Селектор является неправильным, он должен быть:

document.querySelectorAll("#pics > li > a"); 
+0

thnx, У меня недостаточно репутации, чтобы голосовать, но спасибо. –

+0

@FadeocKhaos Добро пожаловать! – undefined