这是一个非常简单的带有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]);

但是无论如何,它返回未定义的,如果只是警告图片,它将返回“对象节点列表”,这听起来不错。

起初,我认为这是一个dom加载问题,所以我添加了
window.onload(){}

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

一切始于当我尝试使用for循环迭代所有li> a元素并添加onclick事件时,该事件在chrome控制台中显示出a元素的数组未定义,因此我尝试使用警报功能对其进行调试。

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

反正我这是什么错picspics变量不应该返回包含3个元素的数组吗?那么第一个元素怎么可能不确定呢?

谢谢

最佳答案

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

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

关于javascript - Javascript数组元素返回未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29443718/

10-09 15:05
查看更多