3 回答
TA贡献1802条经验 获得超6个赞
我将使用普通的ES6 JS提供另一个DOM版本,该版本根据HTMLTexts的textContent对HTMLElements进行排序。这是一个辅助函数,我部分是从对另一个问题的回答中得出的。
HTMLCollection.prototype.sort = function() {
[...this]
.sort( (a, b) => a.textContent.localeCompare(b.textContent) )
.forEach( (val) => val.parentNode.appendChild(val) );
}
包括此之后,您可以直接在NodeList上使用.sort()。
演示:
function sortByOrdnr() {
var allaOrdnr = document.getElementsByClassName("ordernummer");
allaOrdnr.sort();
}
HTMLCollection.prototype.sort = function() {
[...this]
.sort( (a, b) => a.textContent.localeCompare(b.textContent) )
.forEach( (val) => val.parentNode.appendChild(val) );
}
<button onclick="sortByOrdnr()"> Button </button>
<p class="ordernummer"> A </p>
<p class="ordernummer"> E </p>
<p class="ordernummer"> B </p>
<p class="ordernummer"> C </p>
TA贡献1845条经验 获得超8个赞
这是DOM版本
function sortByOrdnr() {
const oDiv = document.getElementById("container");
const ps = oDiv.querySelectorAll("p");
let vals = [];
ps.forEach(p => vals.push(p.textContent));
let sortArr = vals.slice(0);
sortArr.sort().forEach(val => {
oDiv.appendChild(ps[vals.indexOf(val)])
})
}
<button onclick="sortByOrdnr()"> Button </button>
<div id="container">
<p class="ordernummer"> A </p>
<p class="ordernummer"> E </p>
<p class="ordernummer"> B </p>
<p class="ordernummer"> C </p>
</div>
TA贡献1853条经验 获得超9个赞
以下代码段可能会对您有所帮助,您应该使用它.innerHTML来设置新内容:
function sortByOrdnr() {
var allaOrdnr = document.getElementsByClassName("ordernummer");
var antal = allaOrdnr.length;
var listWithAllaOrdnr = [];
for (var i = 0; i < antal; i++) {
listWithAllaOrdnr.push(allaOrdnr[i].innerText);
}
listWithAllaOrdnr.sort() // [A, B, C, E]
for (var i = 0; i < antal; i++) {
allaOrdnr[i].innerHTML = listWithAllaOrdnr[i];
}
}
<button onclick="sortByOrdnr()"> Button </button>
<p class="ordernummer"> A </p>
<p class="ordernummer"> E </p>
<p class="ordernummer"> B </p>
<p class="ordernummer"> C </p>
添加回答
举报