Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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 检索搜索结果的两个最大评分_Javascript_Jquery_Css - Fatal编程技术网

Javascript 检索搜索结果的两个最大评分

Javascript 检索搜索结果的两个最大评分,javascript,jquery,css,Javascript,Jquery,Css,这是我的新问题: 在搜索结果页面上,我们显示了12种产品。 所有评级高于3.7的产品都有评级星图像,其值在一个跨度内作为一个字符串: <div class="searchResult"> <img src="#"/> <span class="ratings">4.2</span>out of 5 </div> 4.2共5个 产品的呈现方式没有任何顺序 我需要的是让所有产品的评级大于4.5,并适用于第一和第二大的背景色风格 如何做

这是我的新问题:

在搜索结果页面上,我们显示了12种产品。 所有评级高于3.7的产品都有评级星图像,其值在一个跨度内作为一个字符串:

<div class="searchResult">
<img src="#"/>
<span class="ratings">4.2</span>out of 5
</div>

4.2共5个
产品的呈现方式没有任何顺序

我需要的是让所有产品的评级大于4.5,并适用于第一和第二大的背景色风格

如何做到这一点? 我设法找到了前两个评级为gt 4.5的产品,但没有找到大的

例如:5个产品的评级为gt 4.5: 4.6 , 4.5 , 5.0 , 4.7 , 4.9 在这种情况下,我需要通过CSS将背景色只应用于那些拥有5.0和4.9的人,而不是第一个和第二个

好吧,这里是棘手的部分:我只能使用Javascript和jQuery来解决这个问题。CSS部分还可以,没问题

我希望我有道理。。。任何问题只要问我,我会尽快给你答复。:)


非常感谢!!:)

首先需要将匹配的div提取为数组,然后对该数组进行排序。使用筛选和排序功能,这两项都可以在一个步骤中完成:

var sortedarr = $('div.searchResult')
    .filter(function() { // only the high ratings
        return (+$(this).find('span.ratings').text() > 4.5);
    })
    .get() // convert to an array of DOM elements
    .sort(function(a, b) { // now sort from highest to lowest
        return ($(b).find('span.ratings').text() - $(a).find('span.ratings').text());
    });
$highest = $(sortedarr[0]);   // a jQuery object
$runnerup = $(sortedarr[1]);
然后:


方法稍有不同,不知道是好是坏:

var myarray= new Array();

$('.ratings').each(function() {
     myarray.push($(this).text());
});

function sortarray(a, b) {
     return (b - a);
}

myarray.sort(sortarray);

if (myarray[0] >= 4.5) {
     $('.ratings:contains('+myarray[0]+'):first').addClass('red');
}
if (myarray[1] >= 4.5) {
     $('.ratings:contains('+myarray[1]+'):not(.red):first').addClass('red');
}  
用红色作为你的背景色


可能更糟,因为它使用了:contains,这一定要求很高。

所有答案都很完美!!谢谢大家!!你这个笨蛋!是的,要求更高,但也很有效。Performance wise必须选择另一种方式,通过筛选和排序。非常感谢,伙计!:)是的,丹尼斯的答案更好。我并没有删除我的,因为它使用:contains,这不是很有名,所以也许有一天它会帮助别人。祝你的项目好运!是的,请在这里留下你的答案。它很有用!谢谢!:)
var myarray= new Array();

$('.ratings').each(function() {
     myarray.push($(this).text());
});

function sortarray(a, b) {
     return (b - a);
}

myarray.sort(sortarray);

if (myarray[0] >= 4.5) {
     $('.ratings:contains('+myarray[0]+'):first').addClass('red');
}
if (myarray[1] >= 4.5) {
     $('.ratings:contains('+myarray[1]+'):not(.red):first').addClass('red');
}