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

如何仅获取ul元素自身文本内容(排除li、a标签文本)

如何仅获取ul元素自身的文本内容?

我来帮你搞定这个问题!你现在碰到的情况是:用textContent或者innerText获取ul元素内容时,会把它内部所有子元素(比如li、a标签)的文本也一起返回,但你只需要ul自身的那部分文本。下面给你两种简单可行的实现方法:

方法一:筛选元素的文本子节点

DOM元素的子节点里,除了其他元素节点,还包含纯文本节点(比如ul里的" hey ")。我们可以遍历ul的所有子节点,只提取文本节点的内容:

const el = document.getElementById('a3');
let ulOwnText = '';

// 遍历ul的所有子节点
el.childNodes.forEach(node => {
  // 只处理文本节点(Node.TEXT_NODE对应的数值是3)
  if (node.nodeType === Node.TEXT_NODE) {
    // 剔除多余空格后拼接
    ulOwnText += node.textContent.trim() + ' ';
  }
});

// 清理结果末尾的空格
ulOwnText = ulOwnText.trim();
console.log(ulOwnText); // 输出 "hey"

这个方法的核心是识别文本节点,通过nodeType判断,只把ul自身的文本内容收集起来,完全忽略子元素。

方法二:克隆元素后清空子节点

另一种思路是先克隆目标ul元素,然后把克隆体的所有子元素都移除,剩下的就是ul自身的文本了:

const el = document.getElementById('a3');
// 深克隆ul元素(包含所有子节点)
const ulClone = el.cloneNode(true);

// 移除克隆体的所有子元素
while (ulClone.firstChild) {
  ulClone.removeChild(ulClone.firstChild);
}

// 现在克隆体的文本就是ul自身的内容
const ulOwnText = ulClone.textContent.trim();
console.log(ulOwnText); // 输出 "hey"

这种方法更直观,相当于给ul做了个“副本”,然后把副本里的子元素全部删掉,剩下的自然就是ul自己的文本了。

补充说明

为什么原来的textContent不行?因为textContent的特性就是返回当前元素及其所有后代元素的合并文本内容,所以必须通过上述方法过滤掉子元素的文本部分,才能得到ul自身的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:19:01