gpt4 book ai didi

javascript - 在javascript中重新排序节点列表

转载 作者:行者123 更新时间:2023-11-30 06:26:07 25 4
gpt4 key购买 nike

我想按 VM 字段名称属性对我的节点列表进行排序。XML:

 <SRM>
<HBR>
<VM Name="mast0010">
<FieldOne>ttttt</FieldOne>
<Disk Name="Name One">
<FieldTwo>aaaaa</FieldTwo>
<FieldThree>bbbbb</FieldThree>
</Disk>
<Disk Name="Name Two">
<FieldTwo>fffff</FieldTwo>
<FieldThree>ccccc</FieldThree>
</Disk>
</VM>
<VM Name="mast0003">
<FieldOne>rrrrr</FieldOne>
<Disk Name="Name One">
<FieldTwo>ddddd</FieldTwo>
<FieldThree>eeeee</FieldThree>
</Disk>
</VM>
</HBR>
</SRM>

我写了下面的代码:

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/>");
}

它返回 mast0010、mast0003我需要 mast0003、mast0010 订单。请帮帮我。我不知道问题出在哪里。谢谢

最佳答案

不要使用 document.write,它来自旧版本的 JavaScript,不再使用。如果要将节点添加到事件文档中,请使用 DOM 操作函数,如 appendChild , insertBefore

您还调用了 ax.sort 一百万次(或者更确切地说,为数组中的每个元素调用一次)。这不是您使用排序的方式,所以只需将其变成一行,并依赖排序输入,不要触及您的数组。

重写代码:

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);
});

关于javascript - 在javascript中重新排序节点列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20947683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com