由于它无法在IE中运行,因此我尝试使用out箭头功能转换以下逻辑
我已经转换了getCellValue。
const getCellValue = function(tr, idx){
tr.children[idx].innerText || tr.children[idx].textContent
};
我无法转换比较器const函数和其他逻辑。
const comparer = (idx, asc) => (a, b) => (
(v1, v2) => v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ?
v1 - v2 :
v1.toString().localeCompare(v2)
)(getCellValue(asc ? a : b, idx), getCellValue(asc ? b : a, idx));
document.querySelectorAll('th').forEach(th => th.addEventListener('click', (() => {
const table = th.closest('table');
Array.from(table.querySelectorAll('.message-table:nth-child(n)'))
.sort(comparer(Array.from(th.parentNode.children).indexOf(th), this.asc = !this.asc))
.forEach(tr => document.getElementById("tblMsgBody").appendChild(tr));
Array.from(table.querySelectorAll('.show-documents:nth-child(n)'))
.forEach(tr => {
var elementId = tr.id.replace("document-handling-", "")
$("#tr-" + elementId).after(tr)
});
})
));
答案 0 :(得分:-1)
'use strict';
var comparer = function comparer(idx, asc) {
return function (a, b) {
return function (v1, v2) {
return v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ? v1 - v2 : v1.toString().localeCompare(v2);
}(getCellValue(asc ? a : b, idx), getCellValue(asc ? b : a, idx));
};
};
document.querySelectorAll('th').forEach(function (th) {
return th.addEventListener('click', function () {
var table = th.closest('table');
Array.from(table.querySelectorAll('.message-table:nth-child(n)')).sort(comparer(Array.from(th.parentNode.children).indexOf(th), undefined.asc = !undefined.asc)).forEach(function (tr) {
return document.getElementById("tblMsgBody").appendChild(tr);
});
Array.from(table.querySelectorAll('.show-documents:nth-child(n)')).forEach(function (tr) {
var elementId = tr.id.replace("document-handling-", "");
$("#tr-" + elementId).after(tr);
});
});
});