为商店产品创建按高/低价目表排序
Creating Sort by high/low price list for store products?
这是我的HTML示例,但明显缩短了:
<h2 class="price">$881.99</h2>
<h2 class="price">$715.05</h2>
<h2 class="price">$651.95</h2>
<h2 class="price">$921.10</h2>
我的 JavaScript 感谢这里的一个用户帮助我,它删除了 $ 并对价格进行排序,然后记录到控制台,如您所见。
function myFunction() {
return Array.prototype.slice.call(document.getElementsByClassName("price"))
.map(function(el){
return Number(el.innerHTML.replace(/'$/, ""));
})
.sort();
}
console.log(myFunction());
问题是,当我使用小提琴时它工作正常,但当我尝试将其实现到我的实际网站时则不行,数组是空的。
所以基本上我想知道如何将排序的项目实际输出到屏幕上,以及如何在myFunction
中反转排序顺序?
下面是一个工作示例。您可以通过传递一个函数作为.sort()
的第一个参数来反转排序顺序,该参数告诉 JavaScript 哪个项目先出现。在这里,我在该函数的 return
语句中交换了a
和b
,这颠倒了排序顺序。然后,使用一个简单的循环,我以新顺序将元素追加回它们的父元素。
缺少的是最后一部分,您没有将排序后的元素添加回文档中,它们在排序完成后留在内存中,没有任何反应。
function myFunction(){
var elements = [].slice.call(document.getElementsByClassName("price"));
elements.sort(function(a,b){
return parseFloat(b.innerHTML.substring(1)) - parseFloat(a.innerHTML.substring(1));
});
for (var i=0; i<elements.length; i++)
elements[i].parentNode.appendChild(elements[i]);
}
myFunction();
<h2 class="price">$881.99</h2>
<h2 class="price">$715.05</h2>
<h2 class="price">$651.95</h2>
<h2 class="price">$921.10</h2>
简单的方法,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h2 class="price">$881.99</h2>
<h2 class="price">$715.05</h2>
<h2 class="price">$651.95</h2>
<h2 class="price">$921.10</h2>
<script>
var array = Array.slice(document.getElementsByClassName("price"));
array.sort(function (a, b) {
return parseFloat(a.innerHTML.replace("$", "")) - parseFloat(b.innerHTML.replace("$", ""));
});
array.map(function(e){
e.parentNode.appendChild(e);
});
</script>
</body>
</html>
此方法用于反转数组。
<body>
<h2 class="price">$881.99</h2>
<h2 class="price">$715.05</h2>
<h2 class="price">$651.95</h2>
<h2 class="price">$921.10</h2>
<script>
function myFunction() {
var temp;
temp = Array.prototype.slice.call(document.getElementsByClassName("price"))
.map(function(el)
{
temp = Number(el.innerHTML.replace(/'$/, ""));
return temp;
})
.sort();
return temp.reverse();
}
console.log(myFunction());
</script>
</body>
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 使用promise和mongoose对文档进行排序
- Selectize.js:如何对整数值的选项进行排序
- Javascript排序的图像弹出窗口..可以't单独弹出
- 如何通过引用var Using DataTables来进行分页或排序
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- AngularJs对所有页面中的所有记录进行排序
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- 按从高到低对多个int变量进行排序
- jQuery UI可排序-多连接列表拖动
- Javascript排序字符串或数字
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- sort而不是排序javascript
- 通过从节点父级获取所有子级对节点进行排序(获取子级数组)
- 如何合并不同集合的游标并按日期排序
- 为什么我的JavaScript堆栈排序函数不起作用
- ui网格:在自定义表头模板中触发排序
- jquery Onclick函数带有导致双击的回调排序函数
- Rubaxa可与聚合物进行排序/拖放不起作用,具体取决于显示器:
- 为商店产品创建按高/低价目表排序