我有一组列表项,它们希望在页面加载时从高到低自动显示。理想情况下使用jquery或javascript。
这是我的代码。
data.xml
<cd>
<presantage>10%</presantage>
</cd>
<cd>
<presantage>50%</presantage>
</cd>
<cd>
<presantage>5%</presantage>
</cd>
用于显示xml数据
$(document).ready(function(){
$.ajax({
type:"GET",
url:"data.xml",
dataType:"xml",
success:xmlParser2
});
});
function xmlParser2(xml){
xml = $(xml).children();
$(xml).children().each(function () {
let tag = $(this).prop("tagName");
let presantage = '<div>' + $(this).find("presantage").text() + '</div>';
let html = '<li>'+ (presantage)+'</li>';
$(".list").append(html);
});
}
对于订单元素
var ul = $(".list:first");
var arr = $.makeArray(ul.children("li"));
arr.sort(function(a, b) {
var textA = +$(a).text();
var textB = +$(b).text();
if (textA < textB) return -1;
if (textA > textB) return 1;
return 0;
});
ul.empty();
$.each(arr, function() {
ul.append(this);
});
html
<ul class="list"></ul>
答案 0 :(得分:2)
尝试一下:
function xmlParser2(xml){
var obj = {};
xml = $(xml).children();
$(xml).children().each(function () {
obj[$(this).find("presantage").text().replace('%', '')] = $(this).find("presantage").text();
});
for(var k in obj ){
let html = '<li>'+ (obj[k])+'</li>';
$(".list").append(html);
}
// alert(JSON.stringify(obj))
}
答案 1 :(得分:0)
这是一个简单的JS(纯)代码,用于按百分比顺序对百分比进行排序。
var doc = new DOMParser().parseFromString(xml, "application/xml");
var elements = doc.getElementsByTagName('presantage');
var percentages = [];
for (let i = 0; i < elements.length; i++) {
percentages.push(parseFloat(elements[i].textContent));
}
percentages.sort((a, b) => b - a); // array [50, 10, 5]
此后,您可以对percentages
进行排序循环并创建列表html。
注意:如果您需要按升序排序,请执行a - b
。