Javascript数组元素返回undefined

时间:2015-04-04 07:04:12

标签: javascript arrays undefined

这是一个非常简单的带有js脚本的html文档。

...
<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]);

但它返回undefined,无论如何,如果只是提醒picspics,它将返回“object nodelist”,听起来不错。

起初,我认为这是一个dom加载问题,所以我添加了

window.onload(){}

在我的代码之外,也失败了。

当我尝试使用for循环迭代所有li时,一切都开始了。一个元素并添加一个onclick事件,它在chrome控制台中显示a元素的数组未定义,所以我尝试使用alert函数调试它。

之后,我尝试取消附加js文件,只是在chrome中加载html,然后在控制台中键入js代码,它也按预期失败,我建议与window.onload函数相同。

无论如何,我的错是什么? picspics变量不应该返回一个包含3个元素的数组吗?那么第一个元素怎么可能是未定义的呢?

日Thnx。

2 个答案:

答案 0 :(得分:2)

您提供的查询是var picspics = document.querySelectorAll("#pics ul > li > a");,但pics ul。将其更改为:

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

答案 1 :(得分:1)

选择器错误,应该是:

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