作者:小白也坚强_177 | 2023-09-05 11:45
下面是我用来动态构建HTML表的代码(使用从服务器接收的JSON数据).
我在加载数据时显示动画的等待(.gif)图形.但是,当JavaScript函数构建表时,图形会冻结.起初,我很高兴能够实现这一目标(显示表格),我想现在我需要努力提高效率.至少我需要阻止动画图形冻结.我可以去静态"加载"显示,但我宁愿让这个方法工作.
我的建议请等待显示?和效率?可能是建立桌子的更好方法?或许不是一张桌子,而是一些其他"桌子"就像展示一样
var t = eval( "(" + request + ")" ) ;
var myTable = '' ;
myTable += ' ' ;
myTable += "" ;
myTable += "";
for (var i = 0; i < t.hdrs.length; i++) {
myTable += "" + header + " ";
}
myTable += " " ;
myTable += " " ;
myTable += "" ;
for (var i = 0; i < t.data.length; i++) {
myTable += '';
for (var j = 0; j < t.hdrs.length; j++) {
myTable += '';
if (t.data[i][t.hdrs[j]] == "") {
myTable += " " ;
}
else {
myTable += t.data[i][t.hdrs[j]] ;
}
myTable += " ";
}
myTable += " ";
}
myTable += " " ;
myTable += "
" ;
$("#result").append(myTable) ;
$("#PleaseWaitGraphic").addClass("hide");
$(".rslt").removeClass("hide") ;
Andrew Hedge..
26
你基本上想要设置你的循环,以便它们经常产生其他线程.以下是本文中有关运行CPU密集型操作而不冻结UI的主题的示例代码:
function doSomething (progressFn [, additional arguments]) {
// Initialize a few things here...
(function () {
// Do a little bit of work here...
if (continuation condition) {
// Inform the application of the progress
progressFn(value, total);
// Process next chunk
setTimeout(arguments.callee, 0);
}
})();
}
至于简化脚本中HTML的生成,如果您使用的是jQuery,则可以尝试使用我的Simple Templates插件.它通过大幅减少你必须做的连接数来整理整个过程.在我最近做了一些重构之后,它也表现得非常好,这导致了相当大的速度提升.这是一个例子(没有为你完成所有 的工作!):
var t = eval('(' + request + ')') ;
var templates = {
tr : '#{row} ',
th : '#{header} ',
td : '#{cell} '
};
var table = ' ';
$.each(t.hdrs, function (key, val) {
table += $.tmpl(templates.th, {header: val});
});
...
小智..
11
我一直在使用JTemplates来完成你所描述的内容.戴夫·沃德在他的博客的例子在这里.JTemplates的主要好处是你的html没有编入你的javascript.你编写一个模板并调用两个函数让jTemplate从你的模板和你的json构建html.
1> Andrew Hedge..: 你基本上想要设置你的循环,以便它们经常产生其他线程.以下是本文中有关运行CPU密集型操作而不冻结UI的主题的示例代码:
function doSomething (progressFn [, additional arguments]) {
// Initialize a few things here...
(function () {
// Do a little bit of work here...
if (continuation condition) {
// Inform the application of the progress
progressFn(value, total);
// Process next chunk
setTimeout(arguments.callee, 0);
}
})();
}
至于简化脚本中HTML的生成,如果您使用的是jQuery,则可以尝试使用我的Simple Templates插件.它通过大幅减少你必须做的连接数来整理整个过程.在我最近做了一些重构之后,它也表现得非常好,这导致了相当大的速度提升.这是一个例子(没有为你完成所有 的工作!):
var t = eval('(' + request + ')') ;
var templates = {
tr : '#{row} ',
th : '#{header} ',
td : '#{cell} '
};
var table = ' ';
$.each(t.hdrs, function (key, val) {
table += $.tmpl(templates.th, {header: val});
});
...
2> 小智..: 我一直在使用JTemplates来完成你所描述的内容.戴夫·沃德在他的博客的例子在这里.JTemplates的主要好处是你的html没有编入你的javascript.你编写一个模板并调用两个函数让jTemplate从你的模板和你的json构建html.
推荐阅读
如何解决《无法将文件从捆绑包复制到iOS中的文档目录》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《使用中继搜索功能》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《将24小时格式化时间转换为十进制数》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《C#类实例列表》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《如何在中间(垂直)对齐文本》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《Xcode7.2找不到匹配的配置文件》经验,为你挑选了6个好方法。 ...
[详细]
如何解决《如何使用键盘快捷方式在atom中添加文件夹?》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《如何在R中停止一个耗时太长的函数并给它一个替代方案?》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《计算字符串重复SCALA的次数》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《如何使用Ruby2.3中引入的Array#dig和Hash#dig?》经验,为你挑选了2个好方法。 ...
[详细]
如何解决《是否有任何常见的电子邮件客户端预取链接而不是图像?》经验,为你挑选了2个好方法。 ...
[详细]
如何解决《如何在R中按组省略两个最高值和最低值的行》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《集成在Python中返回数组的函数》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《Theano:更改`base_compiledir`以将编译的文件保存在另一个目录中》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《如何执行线程安全获取然后使用ConcurrentHashMap删除?》经验,为你挑选了2个好方法。 ...
[详细]
如何解决《Express-在中间件函数之间传递数据的更好模式》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《Kotlin懒惰的默认属性》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《输入文本框的jQuery悬停事件不起作用》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《如何在忽略文章(A,An,the)的同时对javascript数组进行排序?》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《当多个用户正在查看记录并且1个人更新记录时,如何通知其他记录更新?》经验,为你挑选了0个好方法。 ...
[详细]