Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修改此函数,使其也按日期排序?_Javascript - Fatal编程技术网

Javascript 如何修改此函数,使其也按日期排序?

Javascript 如何修改此函数,使其也按日期排序?,javascript,Javascript,此函数通过单击“我的表”的标题对列进行排序,除了日期之外,该功能工作正常。 我如何修改它,以便我的日期dd/mm/yyyy也可以排序。如果可能的话,我喜欢使用普通JavaScript而不是jquery。 我知道必须有某种转换。但这个日期问题令人困惑 函数SORTMADEOBRAPRINTITEMLIST(n){ 变量表,行,切换,i,x,y,shouldSwitch,dir,switchcount=0; table=document.getElementById(“MaoDeObraNaoFa

此函数通过单击“我的表”的标题对列进行排序,除了日期之外,该功能工作正常。 我如何修改它,以便我的日期dd/mm/yyyy也可以排序。如果可能的话,我喜欢使用普通JavaScript而不是jquery。 我知道必须有某种转换。但这个日期问题令人困惑

函数SORTMADEOBRAPRINTITEMLIST(n){
变量表,行,切换,i,x,y,shouldSwitch,dir,switchcount=0;
table=document.getElementById(“MaoDeObraNaoFaturadasPerClientControlPanelPrint”);
切换=真;
dir=“asc”;
while(切换){
切换=错误;
行=表。行;
对于(i=1;i<(rows.length-1);i++){
shouldSwitch=false;
x=行[i].getElementsByTagName(“TD”)[n];
y=行[i+1].getElementsByTagName(“TD”)[n];
如果(目录==“asc”){
if(x.innerHTML.toLowerCase()>y.innerHTML.toLowerCase()){
shouldSwitch=true;
打破
}
}否则,如果(dir==“desc”){
if(x.innerHTML.toLowerCase()

身份证件
日期
函数
年龄
描述
数量
106
25/11/2020
约翰
33
红色
100,00
102
20/09/2020
玛丽亚
34
白色
200,00
101
29/12/2020
罗杰
20
蓝色
50,00
107
28/01/2020
罗伯特
10
绿色
1050,00

以下代码段-修改为按升序对日期列排序:

功能比较(d1、d2){
var=false;
var parts1=d1.拆分(“/”);
var date1=新日期(parseInt(parts1[2],10),
parseInt(第1[1],10)-1部分,
parseInt(parts1[0],10));;
var parts2=d2.拆分(“/”);
var date2=新日期(parseInt(parts2[2],10),
parseInt(第2部分[1],第10)-1,
parseInt(parts2[0],10));;
如果(日期1>日期2){
bIsGreater=正确;
}
回报率更高;
}
函数SORTMODEOBRAPRINTITEMLIST(n){
变量表,行,切换,i,x,y,shouldSwitch,dir,switchcount=0;
table=document.getElementById(“MaoDeObraNaoFaturadasPerClientControlPanelPrint”);
切换=真;
dir=“asc”;
while(切换){
切换=错误;
行=表。行;
对于(i=1;i<(rows.length-1);i++){
shouldSwitch=false;
x=行[i].getElementsByTagName(“TD”)[n];
y=行[i+1].getElementsByTagName(“TD”)[n];
如果(目录==“asc”){
如果(n!=1){
if(x.innerHTML.toLowerCase()>y.innerHTML.toLowerCase()){
shouldSwitch=true;
打破
}
}else if(比较(x.innerHTML,y.innerHTML)){
shouldSwitch=true;
打破
}
}否则,如果(dir==“desc”){
如果(n!=1){
if(x.innerHTML.toLowerCase()

身份证件
日期
函数
年龄
描述
数量
106
25/11/2020
约翰
33
红色
100,00
102
20/09/2020
玛丽亚
34
白色
200,00
101
29/12/2020
罗杰
20
蓝色
50,00
107
28/01/2020
罗伯特
10
绿色
1050,00

您正在按字母顺序排序

或者将日期更改为

yyyy/mm/dd或为日期添加特殊情况

我还必须确定数字和金额

tablesort插件使用一个数据属性来告诉分类器什么是什么,但这适用于您的数据

函数SORTMADEOBRAPRINTITEMLIST(n){
让表,行,切换,i,x,y,shouldSwitch,dir,switchcount=0;
table=document.getElementById(“MaoDeObraNaoFaturadasPerClientControlPanelPrint”);
切换=真;
dir=“asc”;
while(切换){
切换=错误;
行=表。行;
对于(i=1;i<(rows.length-1);i++){
shouldSwitch=false;
x=行[i]。单元格[n]。textContent.trim().toLowerCase();
y=行[i+1]。单元格[n]。textContent.trim();
常量num=/^\d/.test(x)
const date=num&&x.indexOf(“/”)=1;
若有(日期){
设[dd,mm,yyyy]=x.split(“/”);
x=新日期(yyyy,mm-1,dd,15,0,0).getTime();
[dd,mm,yyyy]=y.split(“/”);
y=新日期(yyyy,mm-1,dd,15,0,0).getTime();
}
else if(num){
x=+x.替换(“,”,“)
y=+y.替换(“,”,“);
}
如果(目录==“asc”){
应选择开关=x>y
}否则,如果(dir==“desc”){
应选择开关=x

身份证件
日期
函数
年龄
描述
数量
96
25/11/2020
约翰
9
红色
100,00
102
20/09/2020
玛丽亚
34
白色
200,00
101
29/12/2020
罗杰
20
蓝色
50,00
107
28/01/2020
罗伯特
10
绿色
1050,00

我给你写了一个片段。这是错误的-