So erhalten Sie alle Li in ul zu einem bestimmten Index
Ich möchte so schreiben
var afterUl=document.querySelectorAll('ul')[sy-1];
var afterLi=afterUl.querySelectorAll('li');
Aber die folgende Zeile meldet einen Fehler
leilei. html:128 Nicht erfasster TypeError: Die Eigenschaft „querySelectorAll“ von undefiniert kann nicht gelesen werden. . .
Wie soll ich schreiben. . Anfängerhilfe
----- 06-03 14:50 -----
感谢 jasonintju 指出错误。
这里的报错并不是因为没有
querySelectorAll
方法,是由于题主的 下标 越界了,导致取到的 是undefined
,undefined
没有querySelectorAll
方法,故报错。正确的下标写法是没有问题的。
补充文档
Element.querySelectorAll() - Web APIs | MDN
----- 06-03 04:30 -----
leilei.html:128 Uncaught TypeError: Cannot read property 'querySelectorAll' of undefined
报错信息已经给你提示了,不能读取
querySelectorAll
属性,因为它是 undefined原因是因为
querySelectorAll
是document
的方法,而不是element
的方法。解决方案是使用
getElementsByTagName
可以参考一下 JavaScript 文档中关于这两个 API 的介绍
Document.querySelectorAll - Web API 接口 | MDN
element.getElementsByTagName - Web API 接口 | MDN
或者使用 jQuery 的
实现的方式很多,你可以采用原生JavaScript,也可以用各种js库来实现。
这里采用原生JavaScript整理一个思路,在ul的DOM元素上添加一个id属性,通过document.getElementById取出ul,然后通过getElementsByTagName取出li元素。
代码如下:
let oLis = document.getElementsByTagName("ul")[index].getElementsByTagName("li");
我自己找到错误了,是因为我后面的索引[sy-1]中变量sy的是之前遍历所有li时候赋值的,因为所有li比所有ul多很多,所以[sy-1]超过了ul的个数,上面那行就会undefined 下面那行就报错了。
谢谢大家。。这问题太幼稚。。