You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS如何选取包含subnav子ul的父li元素,现有写法报undefined如何解决

问题原因

document.querySelectorAll() 返回的是NodeList 类数组集合,其中包含了所有匹配到的.subnav元素,但集合本身没有parentNode属性,只有集合内的单个DOM节点才具备该属性,你直接对集合调用parentNode自然会返回undefined。

正确实现方式

方案1:遍历收集父节点(全浏览器兼容)

先拿到所有.subnav元素,再遍历每个元素提取对应的父级li:

const subNavList = document.querySelectorAll('.wrapper .subnav');
const triggers = Array.from(subNavList).map(item => item.parentNode);
console.log(triggers);

方案2:使用:has()选择器直接匹配(现代浏览器兼容)

CSS的:has()伪类可以直接选中包含指定后代的元素,一行代码即可完成筛选:

const triggers = document.querySelectorAll('.wrapper li:has(.subnav)');
console.log(triggers);

该方案支持Chrome 105+、Firefox 121+、Safari 15.4+版本浏览器,无需额外遍历操作。


内容的提问来源于stack exchange,提问作者Jools

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 06:24:03