Javascript 选择包含文本的所有HTML元素

Javascript 选择包含文本的所有HTML元素,javascript,html,ecmascript-6,Javascript,Html,Ecmascript 6,我有HTML文档: <div class="blog"> <div class="image"></div> <div class="content"> <p class="text"> Some text </p> <div class="date">23.12</div> </div> </div> 一些文本 23.12 如何获取包含内部文

我有HTML文档:

<div class="blog">
  <div class="image"></div>
  <div class="content">
    <p class="text"> Some text </p>
    <div class="date">23.12</div>
  </div>
</div>

一些文本

23.12
如何获取包含内部文本(.text、.date)但不包含包装器(.content)的所有元素

这只是一个例子,在实际情况下,我不知道真正的HTML结构,但我需要一个方法,如何选择所有的文本元素,除了它们的包装


需要普通方式的帮助,不需要jquery。

您需要获取容器,然后获取所有子项,然后过滤这些子项。如果要在生产环境中执行此操作,则需要执行一些错误检查,并确保这些元素都不会返回null、undefined或其他错误值

var container=document.querySelector('.content'),
allKids=container.querySelectorAll('*'),
kidsWithContent=Array.from(allKids.filter)(item=>item.textContent.length!==0);
控制台日志(kidsWithContent)

一些文本

23.12

//首先选择容器
var container=document.body,
//然后是所有节点
elems=container.getElementsByTagName(“*”),
len=元素长度,
埃伦,
电子文本,
我
//我们分配不必要的元素
不需要=[“脚本”、“图像”、“输入”];
//正常循环
对于(i=0;i这里是另一种方式(假设元素包含类
text
date

var coll=document.querySelectorAll(“.text,.date”);//获取包含class.text和.date的HTML元素
var元素=[].slice.call(coll);//转换为数组
elements.map(函数(el,i){console.log(el.innerHTML.trim())});//使用'map'函数显示元素innerHTML

一些文本

23.12
问题是-我不知道父元素HTML结构,因此无法选择包装器元素('.content')。好的,那么对于
容器
使用您知道的最高元素。但这可能会使大型文档中的查询速度变慢。@VladimirHumeniuk不客气,我添加了其他内容。:)因此,您应该尝试自己编写代码。之后,如果你有问题,你可以张贴你已经尝试了一个明确的解释什么是不工作,并提供一个解决方案。