本帖最后由 qq3079530 于 2012-12-25 17:35:31 编辑

解决方案 »

  1.   

     for (var i = 0; i < tbSelectStudent.rows.length; i++) {
                    tbSelectStudent.deleteRow(1);
                }
    这块有问题
    不若
    while(tbSelectStudent.length>1)
    {
        tbSelectStudent.deleteRow(1);
    }
      

  2.   

    貌似用到ajax的样子 
    这样的话在ajax返回值前就往下运行程序了所以得到的值可能不对
      

  3.   


     for (var i = 0; i < tbSelectStudent.rows.length; i++) {
                    tbSelectStudent.deleteRow(1);
                }这样原来的table中的数据删不干净,只能删掉50行就结束了。
      

  4.   

    故而出现
    但是点击第一次加载的100行中的“选择”按钮,提示NULL,就是说100行数据已经删除了,但在页面还能看到,实际已经不存在了。
      

  5.   

    while(tbSelectStudent.length>1)
    {
        tbSelectStudent.deleteRow(1);
    }
    这块直接换成这句:
    tbSelectStudent.innerHTML='';
    这是最好的
      

  6.   

    不好意思,是这块
                for (var i = 0; i < tbSelectStudent.rows.length; i++) {
                    tbSelectStudent.deleteRow(1);
                }
    换成
    tbSelectStudent.innerHTML='';
    高效简洁,不需要循环
      

  7.   


    这样子试过了,也不行,和用for循环一样
      

  8.   


    这样子后,后续的insertRow()、insertCell()都不能用了,无法用table对象插入行了...
      

  9.   

    你什么浏览器?我这里的测试是后续的insertRow()、insertCell()都正常。注意,里面的索引参数要从0开始,你代码里是从1开始,是不对的。
      

  10.   

    谢谢大家,已经解决了。
    @cuixiping 说的方法应该也可以,不过每次还要先把标题行加上。我用的是jQuery的remove()方法。
    标题用<th>标签。$("#tbSelectStudent tr td").remove();
      

  11.   

    那你可以把数据行放在一个单独的<tbody>中,然后就可以用innerHTML并且又能保留标题行了。
    用remove都是要循环遍历移除,效率较差,行数越多越明显。