+ -
当前位置:首页 → 问答吧 → 关于动态table的生成问题

关于动态table的生成问题

时间:2009-07-23

来源:互联网

我有个页面通过jquery的$.ajax回传数据,展示在前台页面,但是为了使页面上的内容排列整齐,我需要动态的生成table。

现在我是使用$().append(),来添加的。

我是<table id='test'></table>先append()


然后,

for(i=1;i<count-1;i++){
      if(i%4==1){
       $("test").append("<tr></tr>");
       $('test > tbody > tr:last').append("<td>dd</td>")
       }
       else{
           $('test > tbody > tr:last').append("<td>dd</td>")
       }
}

现在在Firefox里是正常显示的,而IE会提示红色的地方“对象不支持此属性或方法”

我想问下哪里写的有问题,如何修正,谢谢。
[ 此帖被michael_msx在2009-07-24 14:40重新编辑 ]

作者: michael_msx   发布时间: 2009-07-23

应该是写成 #test

此外,为什么不用

$('#test').append("<tr><td>dd</td></tr>")

作者: keakon   发布时间: 2009-07-23

是#test,我上面漏了。

我想问下jquery怎么选择最后一个tr

$("#table > tbody > tr:last").append("<td>dd</td>");

在firefox中能正常运行,但是在IE会报,对象不支持的属性或方法。
[ 此帖被michael_msx在2009-07-24 09:07重新编辑 ]

作者: michael_msx   发布时间: 2009-07-24

$(" tr:last",$("#table"))
这样选的??

作者: jamix   发布时间: 2009-07-24

好像不行,等待高手求解,ie 除了报当前$的那行错误外,还有一个1500多行错误,我大致算了下,应该是在jquery.js中的find 函数里面报错

作者: michael_msx   发布时间: 2009-07-24

把 > tbody > 去掉试试

此外给你个建议,不要在循环中构造DOM元素,性能会很差的。你可以在循环中更改字符串,然后一次创建。代码大概这样:

复制代码
  1. var dom = [];
  2. for(i=1;i<count-1;i++){
  3.       if(i%4==1){
  4.          dom.append("<tr><td>dd</td>");
  5.        }
  6.        else if (i%4 == 0){
  7.          dom.append("</tr>");
  8.        }
  9.        else{
  10.            dom.append("<td>dd</td>")
  11.        }
  12. }
  13. $('#test').append(dom.join(""));

作者: keakon   发布时间: 2009-07-24

终有可以了,谢谢。

作者: michael_msx   发布时间: 2009-07-24

相关阅读 更多