<table cellspacing="0" cellpadding="0" width="100%"  class=mTable id="month">
<tr><td rowspan=2>月任务</td>
<td>1月</td><td>2月</td><td>3月</td><td>4月</td><td>5月</td><td>6月</td><td>7月</td><td>8月</td><td>9月</td><td>10月</td><td>11月</td><td>12月</td></tr>
<tr><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td>
</tr>
</table>
2行13列的表
我现在要实现1个change(start,end)的JS函数,
比如change(2,6)那我的table就只留下第一列月任务和2月到6月的列,1月和7-12月的列就删除掉,
请问这个change(start,end)应该怎么写啊,我用deleteCell(索引)
主要遇到的1个问题是某列被删除掉后,所有列的索引会发生变化,

解决方案 »

  1.   


    我用deleteCell(索引)
    主要遇到的1个问题是某列被删除掉后,所有列的索引会发生变化,
    我觉得你的可行,要改下就是。删除并非删除,用innerText将删除单元格的内容清掉
    stable.td.innerText = "";那样索引就不会变了
      

  2.   

    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>test</title>
    </head><body>
    <table cellspacing="0" cellpadding="0" width="100%" class=mTable id="month">
    <tr><td rowspan=2>月任务</td>
    <td>1月</td><td>2月</td><td>3月</td><td>4月</td><td>5月</td><td>6月</td><td>7月</td><td>8月</td><td>9月</td><td>10月</td><td>11月</td><td>12月</td></tr>
    <tr><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td><td><input type="text" size=8 /></td>
    </tr>
    </table>
    <script>
    function change(s,e){
    var t = document.getElementById("month");
    for(var i=0;i<t.rows.length;i++){
    var cells = t.rows(i).cells;
    if(i==0){
    for(var j=1;j<cells.length;j++){
    if(j<s||j>e){
    cells[j].style.display = "none";
    }else{
    cells[j].style.display = "";
    }
    }
    }else{
    for(var j=0;j<cells.length;j++){
    if(j<s-1||j>e-1){
    cells[j].style.display = "none";
    }else{
    cells[j].style.display = "";
    }
    }
    }
    }
    }
    change(2,6);
    alert("现在是2-6");
    change(5,11);
    alert("现在是5-11");
    </script></body></html>
      

  3.   

    可以了,唉,这么说起来,其实刚才我已经离成功只有1步了,
    我刚才想到.style.display = "none";
    但是我写成.display = "none";这样了,多谢大家
      

  4.   


    function removeCells(start, end) {
       var tab = document.getElementById("month");
       var rows = tab.rows;
       for (var i = 0; i < rows.length; i++) {
       var cells = rows[i].cells;
       for (var j = 0; j < cells.length; j++) {
       if (j >= start && j <= end) {
    tab.rows[i].deleteCell(start);//因为删除后,后面的元素会移到刚删除的那个位置;所以继续删除这个位置上的元素即可。
                                           //要想删除其他,只需改if的条件就可以了。这里删除的是2-6月,剩下1、7-12月的
       }
       }
       }
       }
      
       window.onload = function () {
       removeCells(2, 6);
                    };