在我的页面中,我有一个html动态表,它由ajax post调用填充。 在该表上,我想对列标题的_Click按列排序值。 使用下面的共享代码也可以正常工作。
现在,我想在点击时显示下面提到的小图标(fontawesome图标)就在列名旁边。 如果没有单击列进行排序,则不应显示图标。 在我的javascript代码中,makeAllSortable()应该在windows加载时调用,第一次单击任何列将显示asc顺序的值,第二次单击将显示desc顺序的值。
图标:
<i class="fa fa-caret-up" aria-hidden="true"></i> - for ascending order
<i class="fa fa-caret-down" aria-hidden="true"></i> - for descending order
Javascript代码:
function sortTable(table, col, reverse) {
var tb = table.tBodies[0], // use `<tbody>` to ignore `<thead>` and `<tfoot>` rows
tr = Array.prototype.slice.call(tb.rows, 0), // put rows into array
i;
reverse = -((+reverse) || -1);
tr = tr.sort(function (a, b) { // sort rows
return reverse // `-1 *` if want opposite order
* (a.cells[col].textContent.trim() // using `.textContent.trim()` for test
.localeCompare(b.cells[col].textContent.trim())
);
});
for (i = 0; i < tr.length; ++i) tb.appendChild(tr[i]); // append each row in order
}
function makeSortable(table) {
var th = table.tHead, i;
th && (th = th.rows[0]) && (th = th.cells);
if (th) i = th.length;
else return; // if no `<thead>` then do nothing
while (--i >= 0) (function (i) {
var dir = 1;
th[i].addEventListener('click', function () { sortTable(table, i, (dir = 1 - dir)) });
}(i));
}
function makeAllSortable(parent) {
parent = parent || document.body;
var t = parent.getElementsByTagName('table'), i = t.length;
while (--i >= 0) makeSortable(t[i]);
}
我找不到任何出路。 请帮帮我。
提前感谢!!
示例代码。。。
null
const sortOrder = document.getElementById('sort-order')
function changeOrder(evt)
{
this.className = (this.className==='')? 'upOrder' : (this.className==='upOrder') ? 'downOrder' : ''
}
sortOrder.addEventListener('click',changeOrder )
#sort-order {
font-size: 40px;
display: inline-block;
width:30px;
height:50px;
border: 1px solid grey;
padding: 0 7px;
}
#sort-order > i { display:none; }
#sort-order.upOrder > i.fa-caret-up { display:inline; }
#sort-order.downOrder > i.fa-caret-down { display:inline; }
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css" />
<div id="sort-order">
<i class="fa fa-caret-up" aria-hidden="true"></i>
<i class="fa fa-caret-down" aria-hidden="true"></i>
</div>
<-- click in!