В данном уроке я покажу вам, как выполнить сортировку DOM элементов по их тексту. Решим задачу сначала на примере списка ul, а затем усложним ее и построим решение для сортировки HTML таблицы по заданной колонке.
Исходники кода
<ul id="list">
<li>5</li>
<li>2</li>
<li>1</li>
<li>3</li>
<li>4</li>
</ul>
<input type="submit" id="button">
let list = document.querySelector('#list');
let items = document.querySelectorAll('#list li');
let button = document.querySelector('#button');
button.addEventListener('click', function() {
let sorted = [...items].sort(function(a, b) {
return a.innerHTML - b.innerHTML;
});
list.innerHTML = '';
for (let li of sorted) {
list.appendChild(li);
}
});
#table {
width: 300px;
}
#table td {
border: 1px solid black;
}
<table id="table">
<tr>
<td>3</td>
<td>b</td>
</tr>
<tr>
<td>4</td>
<td>a</td>
</tr>
<tr>
<td>2</td>
<td>e</td>
</tr>
<tr>
<td>5</td>
<td>d</td>
</tr>
<tr>
<td>1</td>
<td>c</td>
</tr>
</table>
<input type="submit" id="button">
let table = document.querySelector('#table');
let trs = document.querySelectorAll('#table tr');
let button = document.querySelector('#button');
button.addEventListener('click', function() {
let sorted = [...trs].sort(function(a, b) {
if (a.children[1].innerHTML >= b.children[1].innerHTML) {
return 1;
} else {
return -1;
}
});
table.innerHTML = '';
for (let tr of sorted) {
table.appendChild(tr);
}
});