如何通过JavaScript获取无类名子DOM节点内的文本值
实现方案
这个需求完全可以实现,核心思路是先定位到拥有确定类名的父节点,再通过父子节点关系定位到无类名的目标子元素,再提取文本内容即可,以下是几种常用实现方式:
方法1:通过CSS选择器直接定位(最简便)
直接使用父子选择器匹配目标元素,代码如下:
const targetText = document.querySelector('.jobsearch-JobMetadataFooter > div').textContent.trim();
说明:trim() 方法用于去掉文本前后的换行、空格等空白字符,最终得到的targetText就是你需要的Today值。
方法2:分步获取父节点再定位子节点
如果需要后续操作父节点,也可以分步操作:
- 第一步:获取父元素节点
const parentEle = document.querySelector('.jobsearch-JobMetadataFooter'); - 第二步:获取父元素下的第一个div子节点
const targetChild = parentEle.getElementsByTagName('div')[0]; - 第三步:提取文本值
const targetText = targetChild.textContent.trim();
方法3:兼容父元素下存在多个子div的场景
如果父节点下有多个div子元素,不确定目标元素的顺序,也可以遍历匹配文本内容:
const parentEle = document.querySelector('.jobsearch-JobMetadataFooter'); const childDivList = parentEle.querySelectorAll('div'); let targetText = ''; childDivList.forEach(div => { const currentText = div.textContent.trim(); // 匹配到目标文本就赋值 if (currentText === 'Today') { targetText = currentText; } })
注意事项
- 如果你要匹配的是父元素下第N个div子元素,可以把选择器替换为
.jobsearch-JobMetadataFooter > div:nth-child(N),注意序号从1开始计数 - 提取文本优先使用
textContent属性,不要使用innerText,后者会受页面CSS样式渲染的影响,返回结果可能和预期不符
内容的提问来源于stack exchange,提问作者A_Sammy
相关产品推荐
相关产品推荐

