欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

当有多个table.render时,如何判断全部加载完毕

程序员文章站 2022-04-18 13:58:10
...

情景复现

    我使用了layui table.render函数,需要计算多个表格的合计值。然后又不知道怎么判断加载完毕了吗(这个页面内需要计算的还有一些表单项)

解决方法

1 我想到的第一种方法

和这个热心人给我提供的建议差不多

您可以在当前页面设置个变量初始化为0,每个表格的done回调中让变量+1,判断是否和您的表格个数相同,如果是的话再做之后的处理

    搞一个变量,在每个done那里+1,最后判断是否等于表格数。但是我不知道怎么一直不停的询问这个变量满足条件了没有。直到想到他们都是ajax请求,看到这个参考链接
解决:

//先设变量
var count = 0;
done:function(res) {
  //每个表格里面加一下
  count++;
  //调用判断函数 达到询问的效果
  handle();
}
function handle() {
  if (count === 3) {
    //计算合计
  }
 }

2 我想到的第二种方法

    因为我的页面内涉及一些必填的表单项,正常人的思维肯定是等页面全加载完成后再填写这些。于是,我想在必填项发生变化时,计算总值

3 我想到的第三种方法

(我又试了一下,不能用,不知道为啥)
    但是后来又遇到了一些新问题,我不得不需要在进入页面时直接计算合计。然后我询问了小伙伴,他告诉我可以用$().ready(function(){});
    但是我发现一个问题,这个判断的是整个dom是否加载完成,而由于表格是异步的,所以顺序是dom加载完成->加载表格。
    那么,就可以这样,让表格变成同步加载,因为我要计算合计,这里异步的需要貌似不大。
    所以可以在tabler.render里加上async:false,然后再用$().ready(function(){});判断。

4 我想到的第四种方法

    然后我就在想,同步为啥不能用。欸?他是ajax请求,那么我可以找判断所有异步请求结束的方法,于是找到了这种$(document).ajaxStop(function(){});
参考链接