Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据内容选择HTML元素中的文本?_Javascript_Jquery_Html_Css_Find - Fatal编程技术网

Javascript 如何根据内容选择HTML元素中的文本?

Javascript 如何根据内容选择HTML元素中的文本?,javascript,jquery,html,css,find,Javascript,Jquery,Html,Css,Find,我想知道在一个网站的列表或数组中有多少产品。我想把它命名为课程,它是元素中的文本 我可以全部选择它们,但我如何才能在浏览器中使用开发工具过滤带有单词“课程”的内容呢 代码如下: 我对类var e=document.querySelectorAll('.card type')使用选择器 `[​车间​​, ​课程​​, ​车间​​, ​课程​​, ​车间​​, ​车间​​, ​车间​​, ​车间​​, ​课程​​, ​车间​​, ​课程​​, ​课程​​, ​课程​​, ​课程​​, ​课

我想知道在一个网站的列表或数组中有多少产品。我想把它命名为
课程
,它是
元素中的文本

我可以全部选择它们,但我如何才能在浏览器中使用开发工具过滤带有单词“课程”的内容呢

代码如下:

我对类
var e=document.querySelectorAll('.card type')使用选择器

`[​车间​​, 
​课程​​, 
​车间​​,
​课程​​,
​车间​​, 
​车间​​,
​车间​​,
​车间​​,
​课程​​, 
​车间​​,
​课程​​,
​课程​​, 
​课程​​,
​课程​​,
​课程​​,
​课程​​ ​]` 
使用筛选列表

这是使用ES6语法的
let
fat arrow语法
aka lambda。如果您想要ES5 JavaScript,只需使用
var
和普通匿名函数即可

var courses = e.filter(function(item) {
    return item.textContent === "Course";
});

编辑:Kevin B发现我的函数没有定义,他是对的。这是因为
e
是一个
NodeList
而不是一个数组。我们必须转换它!有多种方法可以将NodeList转换为数组。最简单的方法是
splice
。或者你可以想象一下使用
spread
语法
[…e].filter
数组.from()
也是ES6的功能。

使用jquery,只需几行即可完成,使用和

基本上,您需要遍历列表中的所有元素,然后检查每个元素是否有正确的内容,并使用这些内容执行其他操作


您可以使用其他功能,如向下过滤,但这实际上完全取决于您希望对元素执行的操作。

以下是我一步一步完成的操作回答:

  • 选择我想要的元素:
    var e=document.querySelectorAll('.card type');

  • 将该变量设置为数组:
    const f=Array.apply(null,e);

  • 现在使用新数组进行筛选
    let courses=f.filter(item=>item.textContent==='courses');
  • 如果您不想转换为数组,请使用2选项,只需循环节点列表即可

    let course=document.querySelectorAll(“.card type”);
    
    使用旧的良好For循环

    for(let i = 0; i < course.length; i++) {
       console.log(course.item(i).innerText)
    }
    
    for(设i=0;i
    以及仅获取课程单词的IF
    语句

    for(设i=0;i
    转换为数组、过滤器。
    var courses = e.filter(function(item) {
        return item.textContent === "Course";
    });
    
    $('.card-type').each(function(el, i) {
      var text = $(el).text();
        if (text == "Course") {
           console.log("found it");
        }
    });
    
    for(let i = 0; i < course.length; i++) {
       console.log(course.item(i).innerText)
    }