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