Javascript 检索搜索结果的两个最大评分
这是我的新问题: 在搜索结果页面上,我们显示了12种产品。 所有评级高于3.7的产品都有评级星图像,其值在一个跨度内作为一个字符串: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,并适用于第一和第二大的背景色风格 如何做
<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');
}