let arr = Array.from(document.querySelector('#grid').rows)
document.querySelector('#grid').addEventListener('click', event =>{
if(event.target.dataset.type == 'number'){
arr.forEach( item => {
if(item.rowIndex > 0){
arr.sort(() => {
item.cells[0].firstChild.data > item.cells[0].firstChild.data
})
}
})
}
})
table {
border-collapse: collapse;
}
th, td {
border: 1px solid black;
padding: 4px;
}
th {
cursor: pointer;
}
th:hover {
background: yellow;
}
<table id="grid">
<thead>
<tr>
<th data-type="number">Возраст</th>
<th data-type="string">Имя</th>
</tr>
</thead>
<tbody>
<tr>
<td>5</td>
<td>Вася</td>
</tr>
<tr>
<td>2</td>
<td>Петя</td>
</tr>
<tr>
<td>12</td>
<td>Женя</td>
</tr>
<tr>
<td>9</td>
<td>Маша</td>
</tr>
<tr>
<td>1</td>
<td>Илья</td>
</tr>
</tbody>
</table>
- 如何使其按年龄从小到大,按名称从 A 到 Z 格式化?
方向是正确的。要成功解决问题,我们需要:
要比较字符串,最好使用
localeCompare
返回 -1、1 或 0 的方法。我们以经典方式比较数字。可以改进代码以避免无意义的排序/重建。