这句代码有没有优化的空间或者是用其他更优的实现方式

amingo 2009-09-24 06:06:32
var tab = document.getElementById('table');
for (var i = 0; i < 100; i++)
{
var newRow = tab.insertRow(tab.rows.length);
var newCell = newRow.insertCell();
newCell.innerText = i + 1;

newCell = newRow.insertCell();
newCell.name = 'td_' + i;
newCell.insertAdjacentHTML("BeforeEnd", "<input value='" + (i + 1) + "' style=TEXT-ALIGN:right NAME=xx >");

newCell = newRow.insertCell();

newCell.name = 'td_1' + i;
newCell.insertAdjacentHTML("BeforeEnd", "<input value='" + (i + 10) + "' style=TEXT-ALIGN:right NAME=yy >");
}


用JS在table中插入100行,每行3列。


这句代码有没有优化的空间或者是用其他更优的实现方式?????????/
...全文
128 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
orain 2009-09-25
  • 打赏
  • 举报
回复
把所有的 HTML 代码先拼出来,然后再一次性插入 HTML 代码。我想可能会更快一些,因为由浏览器自身来做完整的解析,应该比单节点插入速度更好一些吧,不过,这只是我自己的猜测,没具体测试,仅供参考。
zzxap 2009-09-25
  • 打赏
  • 举报
回复
//记录添加行数
var areaCount=1;
//记录实际表格行数
var rowCount=1;
//删除模板html
var delRowTemplete = "<td><a href='javascript:void(0);' class='content_del' onclick='deleteBatchRow(this)'>删除</a></td>";
//表格行模板
var addRowTemplete= "";
$(function(){
//首先取出需要克隆的模板,模板行<tr>id为rowTemplete_0
addRowTemplete= $("#rowTemplete_0").html();
});
//增加行
function addBatchRow(type){
var templete = $("<tr id='rowTemplete_"+areaCount+"'></tr>");
//递增序号,替换掉tr或者td中存在[0]、_0或者(0)防止id相同,这么设计主要是为了后台取值时方便
templete = templete.append(addRowTemplete.replace(/\[0\]/g,"["+areaCount+"]").replace(/_0/g,"_"+areaCount).
replace("processStat(\"0\")","processStat("+areaCount+")"));
//找到最后一条存在的行,在其后拼接一行
var flag = false;
for(var i=areaCount-1;i>=0;i--){
if($("#rowTemplete_"+i).length>0){ $("#rowTemplete_"+i).after(templete.append(delRowTemplete));
break;}
}
//计数加一
areaCount++; rowCount++;
}

//删除行
function deleteBatchRow(obj){
if(rowCount>1) {
$(obj).parents("tr").remove();
rowCount--;
} else alert("至少保留一行");//如果全部删除了,那么也就没有办法再添加行了,模板行也被删了呀
}
//取得条数
function getAreaCount(){
return rowCount;
}
kings2015 2009-09-25
  • 打赏
  • 举报
回复
你可以先把tab.rows.length的长度在循环外定义一个变量取出来。不用每次循环都取一次
chen_ya_ping 2009-09-25
  • 打赏
  • 举报
回复
我想这个已经是很好了,你可以看看你的这段代码的兼容性
myufo1234 2009-09-25
  • 打赏
  • 举报
回复
刚刚忘记给LZ顶帖了~~
~~顶上~~

这个其实没有什么必要优化~~
myufo1234 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 newnetbird 的回复:]
这样吧 JS不行 你用jquery试试哦!那样效率更好点!
[/Quote]
难道你的Jquery是用汇编写的不成~~~
ljsheng 2009-09-25
  • 打赏
  • 举报
回复
好像是罪是优化的状态了!
panzhaojl 2009-09-25
  • 打赏
  • 举报
回复
我试了N久,也没有搞出来。真不好意思。。
帮顶了
lovezhxf 2009-09-25
  • 打赏
  • 举报
回复
关注 。。。
红街咖啡 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyq11 的回复:]
JS执行,占用资源不多,可考虑通过方法调用添加行,还有兼容性问题

[/Quote]
我还是没有明白。。
amingo 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 real_name 的回复:]
引用 10 楼 saisky 的回复:
引用 8 楼 newnetbird 的回复:
这样吧 JS不行 你用jquery试试哦!那样效率更好点!


往往见到这样的回复总是很无奈,能说说啥叫JS不行用jquery吗?唉...

我觉得jquery 各浏览器兼容性好些
[/Quote]

白痴不许在我的贴里留言!!!!!
real_name 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 saisky 的回复:]
引用 8 楼 newnetbird 的回复:
这样吧 JS不行 你用jquery试试哦!那样效率更好点!


往往见到这样的回复总是很无奈,能说说啥叫JS不行用jquery吗?唉...
[/Quote]
我觉得jquery 各浏览器兼容性好些
love41349279 2009-09-24
  • 打赏
  • 举报
回复
UP
saisky 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 newnetbird 的回复:]
这样吧 JS不行 你用jquery试试哦!那样效率更好点!
[/Quote]

往往见到这样的回复总是很无奈,能说说啥叫JS不行用jquery吗?唉...
程序漫步 2009-09-24
  • 打赏
  • 举报
回复
应该 不需要优化了吧。。

楼主也 太细心了 过虑了
ICrazyBoy 2009-09-24
  • 打赏
  • 举报
回复
这样吧 JS不行 你用jquery试试哦!那样效率更好点!
zhanlang9075 2009-09-24
  • 打赏
  • 举报
回复
楼主好[Quote=引用 1 楼 puzhichen 的回复:]
顶,回帖是基本美德!
[/Quote]
我试过在页面中可以放一行两个文本框后分别有Lable标签的,分别代表行和列
放一个按钮,在按钮的下方放一个Table控件,在后台写按钮的单击事件,动态生成表格的效果
个人感觉一般,希望有更多的贴友发表自己的高见
wuyq11 2009-09-24
  • 打赏
  • 举报
回复
JS执行,占用资源不多,可考虑通过方法调用添加行,还有兼容性问题
wuyi8808 2009-09-24
  • 打赏
  • 举报
回复
100行不算多,不需要考虑优化。1K或1W行那就要考虑了。
silentwins 2009-09-24
  • 打赏
  • 举报
回复
这几个句子循环100次占不了多少资源吧,怎么考虑到要优化了
加载更多回复(3)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧