当有多个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(){});
参考链接