前台页面显示一个若干行列的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 = '<table class="tbl">';
str += '<tr>';
for (var i = 0; i < cols; ++i) {
str += '<th >列名1</th><th >列名2</th>';
}
str += '</tr>';
for (var i = 0; i < rows; ++i) {
str += '<tr>';
for (var j = 0 + i; j < count; j = j + rows) {
str += '<td class="clsOne">' + rsp[j].Age+ '</td><td class="clsTwo"><input id="' + rsp[j].NumberTotal+ '" class="easyui-slider"/></td>';
}
str += '</tr>';
}
str += '</table>';
$('.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(..) 用数组
------解决方案--------------------
你可以声明一个数组来保存数据,把+=的操作换成数组的push(),最后append()的时候,join("")一下。
var str = [];
str.push('<table class="tbl">');