Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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 如何获取从匹配条件返回的jQuery元素数?_Javascript_Jquery - Fatal编程技术网

Javascript 如何获取从匹配条件返回的jQuery元素数?

Javascript 如何获取从匹配条件返回的jQuery元素数?,javascript,jquery,Javascript,Jquery,我在一组元素上有一个jQuery过滤器,用于检查哪些项的值小于90,哪些项的值大于100。我想做的是获取符合这些条件的项目数,并最终将它们保存到页面上的其他地方以供输出: $("#dtarget li").filter(function() { if (parseInt(this.innerText) < 90) { $(this).css("color","red"); } else if (parseInt(this.innerText)

我在一组元素上有一个jQuery过滤器,用于检查哪些项的值小于90,哪些项的值大于100。我想做的是获取符合这些条件的项目数,并最终将它们保存到页面上的其他地方以供输出:

$("#dtarget li").filter(function()
{
    if (parseInt(this.innerText) < 90)
    {
        $(this).css("color","red");
    }
    else if (parseInt(this.innerText) > 100)
    {
        $(this).css("color","gold");
    }
});
$(“#dtarget li”).filter(函数()
{
if(parseInt(this.innerText)<90)
{
$(this.css(“颜色”、“红色”);
}
如果(parseInt(this.innerText)>100,则为else
{
$(this.css(“颜色”、“金色”);
}
});
我对jQuery和Javascript还不熟悉,所以简单一点

您可以对jQuery对象调用
.length
,以获取它包含的DOM元素数

//this will return a jQuery object with elements who's value is less than 90
var less_than_90 = $("#dtarget li").filter(function()
{
    var text = $(this).text();
    if (parseInt(text) < 90)
    {
        return true;
    }
    return false;
});

//then you can get the number of DOM elements within the jQuery object created above
var less_than_90_count = less_than_90.length;
//这将返回一个jQuery对象,其中的元素的值小于90
var小于90=$(“#数据目标li”)。筛选器(函数()
{
var text=$(this.text();
if(parseInt(text)<90)
{
返回true;
}
返回false;
});
//然后可以获得上面创建的jQuery对象中DOM元素的数量
var小于等于90的计数=小于等于90的长度;
然后,对于大于100的任何对象也可以这样做

请注意,我删除了
this.innerText
,取而代之的是
$(this.text()
,因为您已经在使用jQuery,所以您最好尽可能从中获取所有信息


下面是一个演示:

也许这会起作用:

var count = $("#dtarget li").filter(function()
{
    if (parseInt(this.innerText) < 90)
    {
        return true;
    }
    else if (parseInt(this.innerText) > 100)
    {
        return true;
    }else{
        return false;
    }
}).length;
var count=$(“#dtarget li”).filter(函数()
{
if(parseInt(this.innerText)<90)
{
返回true;
}
如果(parseInt(this.innerText)>100,则为else
{
返回true;
}否则{
返回false;
}
}).长度;

编辑:
返回
是限制项。我在想什么。

我只想为每一个添加一个计数器

var redCounter = 0,
    goldCounter = 0;

$("#dtarget li").filter(function() {
    if (parseInt(this.innerText) < 90) {
        $(this).css("color","red");
        redCounter++;
    }
    else if (parseInt(this.innerText) > 100) {
        $(this).css("color","gold");
        goldCounter++;
    }
});
var redCounter=0,
goldCounter=0;
$(“#dtarget li”).filter(函数(){
if(parseInt(this.innerText)<90){
$(this.css(“颜色”、“红色”);
redCounter++;
}
如果(parseInt(this.innerText)>100,则为else{
$(this.css(“颜色”、“金色”);
goldCounter++;
}
});

我想你不明白
.filter()
的目的。它用于根据某些条件或函数减少给定jQuery对象中的项数。如果按原样使用函数作为
.filter(fn)
的参数,则从过滤器返回true以将元素包含在最终集合中,返回false以删除它。你两个都不做

如果您只想迭代jQuery对象,请使用
.each()
,而不是
.filter()

要保存jQuery对象的结果,只需将其分配给如下变量,然后使用
。each()


var return的可能重复可能不是最好的,因为“return”是一个关键字
innerText
,无论如何在所有浏览器中都不可用(我认为Firefox使用
textContent
)。
var $targets = $("#dtarget li").each(function()
{
    if (parseInt(this.innerText) < 90)
    {
        $(this).css("color","red");
    }
    else if (parseInt(this.innerText) > 100)
    {
        $(this).css("color","gold");
    }
});
if ($targets.length > 1) {
    $targets.css("padding-left", "10px");
}