如何根据内容选择HTML元素中的文本
How to select text inside an HTML element, based on content?
我想找到有多少产品在一个网站内的列表或数组。我想要的是Course
它是<strong >
元素中的文本
我可以选择他们,但我怎么能过滤只有单词COURSE我使用开发工具在我的浏览器。
代码如下:
我使用var e = document.querySelectorAll('.card-type');
类的选择器
`[<strong class="card-type">Workshop</strong>,
<strong class="card-type">Course</strong>,
<strong class="card-type">Workshop</strong>,
<strong class="card-type">Course</strong>,
<strong class="card-type">Workshop</strong>,
<strong class="card-type">Workshop</strong>,
<strong class="card-type">Workshop</strong>,
<strong class="card-type">Workshop</strong>,
<strong class="card-type">Course</strong>,
<strong class="card-type">Workshop</strong>,
<strong class="card-type">Course</strong>,
<strong class="card-type">Course</strong>,
<strong class="card-type">Course</strong>,
<strong class="card-type">Course</strong>,
<strong class="card-type">Course</strong>,
<strong class="card-type">Course</strong> ]`
用filter
过滤列表
let courses = e.filter(item => item.textContent === "Course");
这是使用let
和fat arrow syntax
又名lambda,这是ES6语法。如果你想要ES5 JavaScript,只需使用var
和一个普通的匿名函数。
var courses = e.filter(function(item) {
return item.textContent === "Course";
});
编辑:Kevin B发现我的功能将是未定义的,他是正确的。这是因为e
是NodeList
而不是数组。我们必须转换它!有多种方法可以将NodeList转换为数组。最简单的是splice
。或者您也可以使用spread
语法[...e].filter
或Array.from()
,它们都是ES6的功能。
我是这样一步步回答的:
- 选择我想要的元素:
var e = document.querySelectorAll('.card-type');
- 将变量放入数组中:
const f = Array.apply(null, e);
- 现在过滤器与新数组:
let courses = f.filter(item => item.textContent === 'Courses');
和2选项如果你不想转换为ARRAY,只需循环NodeList。
let course = document.querySelectorAll('.card-type');
使用旧的For循环
for(let i = 0; i < course.length; i++) {
console.log(course.item(i).innerText)
}
And IF语句获取COURSE word ONLY
for (let i =0; i < course.length; i++) {
if(course.item(i).innerHTML == "Course")
{
console.log(course.item(i));
}
}
使用jquery,你可以只用几行,使用.text()
和.each()
。
$('.card-type').each(function(el, i) {
var text = $(el).text();
if (text == "Course") {
console.log("found it");
}
});
基本上,您遍历列表中的所有元素,然后检查每个元素的内容是否正确,并对其进行其他操作。
您可以使用其他功能,如向下过滤,但这完全取决于您希望对元素做什么。
相关文章:
- 识别切换条元素文本并在量角器中单击它
- 数组函数不适用于从元素文本创建的JavaScript数组
- 将元素文本替换为子项中的值
- 如何在不丢失格式的情况下连续淡入() 元素文本的每个字符,包括嵌套元素
- 使用 jQuery 从目标页面而不是当前页面获取元素文本
- 使用jquery为html元素文本的每个字符设置动画
- regex替换元素文本
- 在 Firefox 中单击鼠标时无法选择所有输入元素文本
- 如何确定 HTML 元素文本中“新行”的位置
- 在量角器中将元素文本转换为对象
- 无法使用 jquery 获取 xml 元素文本值
- jQuery - 仅获取父元素文本,而不获取子元素文本
- 单击其他元素(文本输入)时显示下拉列表
- 使用自定义绑定更新元素文本
- Android驱动程序的scrollTo和scrollToExact 方法的问题.方法不会滚动到所需的元素文本,而是滚动
- 选择元素文本并添加逗号
- 获取不带 html 标记的页面元素文本,但保留换行符
- 删除元素文本中的最后一个字符
- 如何按顺序获取所有元素文本
- 使用AngularJS将元素文本复制到title属性的干净方法