javascript - 在没有箭头功能的情况下转换以下逻辑,因为它在 IE 中不起作用
问题描述
我正在尝试使用 out 箭头功能转换以下逻辑,因为它在 IE 中不起作用
我已经转换了 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)
});
})
));
解决方案
'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);
});
});
});
推荐阅读
- azure - 在 AZURE 中使用 python sdk 更新资源标签时需要帮助
- google-apps-script - 谷歌应用程序脚本中的文件夹、子文件夹和文件计数
- makefile - 使通配符功能截断/删除输入的文件名
- docker - SSH_AUTH_SOCK 在 Jenkins 工作容器内运行的 docker 容器中不起作用(Docker 中的 Docker)
- django - Get reverse relation in Django Serializer
- mysql - mysqld:表 'mysql.plugin' 不存在 [错误] 无法打开 mysql.plugin 表。请运行 mysql_upgrade 来创建它。- Mac BigSur 操作系统
- dolphindb - 只能显示一个外键
- android - 如何确定用户是否从 google play store 订阅中重新订阅过期订阅
- r - R降价,控制台输出为内联并在预览选项卡中绘图
- angular - 从链接 Angular 12 中检索值