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