Javascript 尝试在表上执行JS函数后,页面崩溃

Javascript 尝试在表上执行JS函数后,页面崩溃,javascript,Javascript,我有一个很大的(我相信)表,有728行,每行13列。我试图使用下面的功能对表格进行排序,但页面崩溃,Chrome显示以下消息: 您可以等待它响应或退出页面 排序功能: w3.sortHTML=函数(id、sel、sortvalue){ 变量a、b、i、ii、y、bytt、v1、v2、cc、j; a=w3.getElements(id); 对于(i=0;i

我有一个很大的(我相信)表,有728行,每行13列。我试图使用下面的功能对表格进行排序,但页面崩溃,Chrome显示以下消息:

您可以等待它响应或退出页面

排序功能:

w3.sortHTML=函数(id、sel、sortvalue){
变量a、b、i、ii、y、bytt、v1、v2、cc、j;
a=w3.getElements(id);
对于(i=0;iv2))| |(j==1&(v10){
打破
}
}
}
};
它在较小的桌子上工作得非常好


有没有一种编码方法可以使它在大型表上工作?

这只是一个想法,但请尝试在数据排序之前对其进行所有“toLowerCase();”更改。或者,暂时去掉这些函数,看看它是否加快了速度。我知道你正在尝试开发它,但我建议你使用现有的库,比如我已经尝试过的@vr\u driver-四个嵌套循环的相同结果?您使用的是什么排序算法?也许是时候使用更有效的排序算法了。以及将数据存储在内存中而不是存储在DOM中,这样您就可以高效地直接对数据执行操作,然后从数据重新呈现DOM。@Tushar您在大表上使用过它吗?它是如何工作的?这只是一个想法,但是在对数据进行排序之前,请尝试对其进行所有“toLowerCase();”更改。或者,暂时去掉这些函数,看看它是否加快了速度。我知道你正在尝试开发它,但我建议你使用现有的库,比如我已经尝试过的@vr\u driver-四个嵌套循环的相同结果?您使用的是什么排序算法?也许是时候使用更有效的排序算法了。以及将数据存储在内存中而不是存储在DOM中,这样您就可以高效地直接对数据执行操作,然后从数据重新呈现DOM。@Tushar您在大表上使用过它吗?它是如何工作的?
w3.sortHTML = function(id, sel, sortvalue) {
var a, b, i, ii, y, bytt, v1, v2, cc, j;
a = w3.getElements(id);
for (i = 0; i < a.length; i++) {
    for (j = 0; j < 2; j++) {
        cc = 0;
        y = 1;
        while (y == 1) {
            y = 0;
            b = a[i].querySelectorAll(sel);
            for (ii = 0; ii < (b.length - 1); ii++) {
                bytt = 0;
                if (sortvalue) {
                    v1 = b[ii].querySelector(sortvalue).innerHTML.toLowerCase();
                    v2 = b[ii + 1].querySelector(sortvalue).innerHTML.toLowerCase();
                } else {
                    v1 = b[ii].innerHTML.toLowerCase();
                    v2 = b[ii + 1].innerHTML.toLowerCase();
                }
                /******* custom *******/
                if (v1 === '-') {
                    v1 = 'zzzzz';
                }
                if (v2 === '-') {
                    v2 = 'zzzzz';
                }
                /******* custom *******/
                if ((j == 0 && (v1 > v2)) || (j == 1 && (v1 < v2))) {
                    bytt = 1;
                    break;
                }
            }
            if (bytt == 1) {
                b[ii].parentNode.insertBefore(b[ii + 1], b[ii]);
                y = 1;
                cc++;
            }
        }
        if (cc > 0) {
            break;
        }
    }
}
};