在javascript中对节点列表重新排序
我想按VM field Name属性对节点列表进行排序。 xml:在javascript中对节点列表重新排序,javascript,xml,sorting,Javascript,Xml,Sorting,我想按VM field Name属性对节点列表进行排序。 xml: ttttt AAAA bbbbb fffff ccccc RRR DDD eeeee 我写了下面的代码: var x=xmlDoc.getElementsByTagName("VM"); var ax = Array.prototype.slice.call(x, 0); for (var i=0; i<ax.length; i++) { ax.sort(function(a, b){ var
ttttt
AAAA
bbbbb
fffff
ccccc
RRR
DDD
eeeee
我写了下面的代码:
var x=xmlDoc.getElementsByTagName("VM");
var ax = Array.prototype.slice.call(x, 0);
for (var i=0; i<ax.length; i++) {
ax.sort(function(a, b){
var a = ax[i].getAttribute('Name');
var b = ax[i].getAttribute('Name');
if(a < b) return -1;
if(a > b) return 1;
return 0;
});
}
for (i=0; i<ax.length; i++) {
document.write(ax[i].getAttribute('Name') + "<br/>");
}
var x=xmlDoc.getElementsByTagName(“VM”);
var ax=Array.prototype.slice.call(x,0);
对于(VarI=0;IB)返回1;
返回0;
});
}
对于(i=0;i
这是为您修复的排序功能
var x=xmlDoc.getElementsByTagName("HBR")[0].getElementsByTagName("VM");
var ax = Array.prototype.slice.call(x, 0);
for (var i=0; i<ax.length; i++) {
ax.sort(function(a, b){
a = a.getAttribute('Name');
b = b.getAttribute('Name');
if(a < b) return -1;
if(a > b) return 1;
return 0;
});
}
var x=xmlDoc.getElementsByTagName(“HBR”)[0].getElementsByTagName(“VM”);
var ax=Array.prototype.slice.call(x,0);
对于(VarI=0;IB)返回1;
返回0;
});
}
不要使用
文档。编写,它来自一个古老的JavaScript版本,不再使用。如果要将节点添加到活动文档中,请使用DOM操纵函数,如等
您还多次调用ax.sort(或者更确切地说,对数组中的每个元素调用一次)。这不是使用sort的方式,所以只需将其转换为一行,并依赖于sort输入,而不要接触数组
重写代码:
ax = ax.sort(function(a,b) {
a = a.getAttribute("Name");
b = b.getAttribute("Name");
return a < b ? -1 : b < a ? 1 : 0; });
});
您可以将字符串与<和>进行比较,这很好,它根据标准字符串比较规则执行正确的操作。@Mike'Pomax'Kamermans感谢您的提示。正在更新我的答案。虽然这仍然依赖于parseInt,但这里根本不需要它=)
ax = ax.sort(function(a,b) {
a = a.getAttribute("Name");
b = b.getAttribute("Name");
return a < b ? -1 : b < a ? 1 : 0; });
});
ax.forEach(function(node) {
document.body.appendChild(node);
});