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

如何获取ul直接子li元素的innerHTML?不使用jQuery

不用jQuery获取目标li的innerHTML方案

没问题,咱们用原生JavaScript就能精准拿到内容为1、2、3的li元素的innerHTML。你的HTML里有嵌套的列表结构,直接用ul > li会把内层ul的子li(4、5)也选中,所以得做些精准筛选,下面给你几种可行的方法:

方法1:给外层ul加标识(最推荐)

如果能修改HTML,给外层ul加个id或类名是最稳妥的方式,后续选择器精准且不易出错:

<html>
<body>
<ul id="outer-list"> <!-- 添加唯一标识 -->
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <div><div>
    <ul>
      <li>4</li>
      <li>5</li>
    </ul>
  </div></div>
</ul>
<script>
  // 精准选择外层ul的直接子li
  const targetLis = document.querySelectorAll('#outer-list > li');
  // 遍历获取每个li的innerHTML
  targetLis.forEach(li => {
    console.log(li.innerHTML); // 依次输出1、2、3
  });
</script>
</body>
</html>

方法2:不修改HTML,通过结构筛选

如果没法改动HTML,可以借助DOM的层级关系过滤掉内层的li:

<html>
<body>
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <div><div>
    <ul>
      <li>4</li>
      <li>5</li>
    </ul>
  </div></div>
</ul>
<script>
  // 先获取所有ul的直接子li
  const allDirectLis = document.querySelectorAll('ul > li');
  // 过滤掉那些父ul被div包裹的li
  const targetLis = Array.from(allDirectLis).filter(li => {
    return !li.parentElement.closest('div');
  });
  // 输出结果
  targetLis.forEach(li => console.log(li.innerHTML));
</script>
</body>
</html>

另一种更简洁的方式是用:scope伪类,它能限定选择范围在当前元素内,直接选外层ul的直接子li:

const outerUl = document.querySelector('body > ul');
const targetLis = outerUl.querySelectorAll(':scope > li');
targetLis.forEach(li => console.log(li.innerHTML));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:08:29