(JS高手请进):求教前台页面JS渲染Table的优化方法
前台页面显示一个若干行列的Table,行列数由后台服务器传递的总记录来计算,通过Firebug可以查看到数据传授到前后至正常显示Table的这段时间很长,用户估计等不及,所以我认为JS的代码有很大的优化空间,请教这里的JS高手,怎么优化这段js代码.页面需要easyUI的Slider控件!
function renderTable(rsp) {
var count =rsp.length ;//总记录数
var rows = 20;
var cols = Math.ceil(count / rows);
var str = '
str += '
';for (var i = 0; i
str += '
列名1列名2';}
str += '
';for (var i = 0; i
str += '
';for (var j = 0 + i; j
str += '
' + rsp[j].Age+ '';}
str += '
';}
str += '
';$('.divTable').append(str);
$('.easyui-slider').slider({
showTip: true,
min: 0,
max: 150,
step: 1,
tipFormatter: function (value) {
return value + '岁';
}
});
//table渲染css
$("tr").not(':first').hover(
function () {
$(this).css("background", "red");
},
function () {
$(this).css("background", "");
});
$.parser.parse($('#frmName'));
}
优化
firebug
easyUI
------解决方案--------------------
1 你数据太多,用什么方法都卡,考虑分页,或分步载
2 .hover 事件邦定改成live 用事件委托
3. 拼接str改成 var strs=[] ;strs.push(..) 用数组
------解决方案--------------------
引用:谢谢回复,另外C#中的字符串拼接String.Join和String.Concat要比+=效率高,JS中是否有这样的函数?
引用:可以考虑先把 $('
然后在循环体中创建 $("
...") append 到 t……你可以声明一个数组来保存数据,把+=的操作换成数组的push(),最后append()的时候,join("")一下。
var str = [];
str.