HTML里有col元素和colgroup。
但我在网上看到的列操作全部是类似下面的做法:
for(var   i=0;i<rows;i++)   
  {   
          document.all.myTable.rows[i].deleteCell(column_number)     
  }   难道不能直接操作列元素?我想知道如何获取列对象。不幸的是,没见有给col赋ID的情况。我的问题是:如何通过一个cell来获取该cell所属的col?

解决方案 »

  1.   

    楼主的假设会遇到一个问题就是,如果某行出现了colspan怎么办,按最弱的情况,即没有colspan这种情况来看,楼主的问题就很简单了。
      

  2.   

    document.getElementsByTagName,然后再给你的那个列加个自定义属性,比如<td wk=3>
    那应判断wk是不是等于3,如果是,就是你要的例。
      

  3.   

    利用cell的cellIndex属性,知道cell就可以知道它是第几列
      

  4.   

    <script type="text/javascript">
         //添加行
         function addTR(){
         var tab = document.getElementById("tab");  //获得表格对象
         var tab_len = tab.rows.length;
         var i = tab_len;   //i 从0开始
         var new_row = tab.insertRow(i);
         var the_cell;
         //第一列
         the_cell = new_row.insertCell(0);
         the_cell.innerHTML= "<input type='text' name='name'>";
         //第er列
         the_cell = new_row.insertCell(1);
         the_cell.innerHTML= "<input type='text' name='age'>";
         //第san列
         the_cell = new_row.insertCell(2);
         the_cell.innerHTML= "<select name='mb'><option value='男'>男</option><option value='女'>女</option></select>";
         //第si列
         the_cell = new_row.insertCell(3);
         //the_cell.innerHTML= "<input type='button' value='删除' onClick='delTR()'/>";
         the_cell.innerHTML= "<a href='#' onclick='delTR()' >删除</a>";
         }
         /*
        1:var obj=event.srcElement;
    2:obj.tagName=='TD'
    3:obj.parentElement.id

    1. 获取当然事件触发对象
    2. 对象的标签名等于TD
    3. 对象的父标签的id属性
    */
         //删除行
         function delTR(){
         var tab = document.getElementById("tab"); //获得表格对象
         var the_cell=get_Element(event.srcElement,"td");  //获得当前的列
         var index=the_cell.parentElement.rowIndex; // 通过当前列找到行对象,并且得到行的索引
         tab.deleteRow(index); 
         }
         //获得点击行的对象
         function get_Element(the_ele,the_tag){       
         the_tag =the_tag.toLowerCase();     
        if(the_ele.tagName.toLowerCase()==the_tag){  
         return the_ele;    
         }
         while(the_ele=the_ele.offsetParent){    
         if(the_ele.tagName.toLowerCase()==the_tag){       
         return  the_ele;
         }
         }       
        return null;       
         }
        
        </script>
      

  5.   

    <table id="tab" border="1"> 
         <tr>
         <td width="150">名称</td>
         <td width="150">年龄</td>
         <td width="150">性别</td>
         <td width="150"><a href="javascript:addTR();">添加</a></td>
         </tr>
         <tr>
         <td>11</td>
         <td>11</td>
         <td>11</td>
         <td><input type='button' value='删除' onClick='delTR()'/></td>
         </tr>
         <tr>
         <td>22</td>
         <td>22</td>
         <td>22</td>
         <td><input type='button' value='删除' onClick='delTR()'/></td>
         </tr>
        </table>
      

  6.   

    知道了cell,那么col的索引就知道了,这个简单。
    问题是,我要得到作为节点的col。
    如果得到了col节点,就可以一次性的remove。实际上,我对html,dhmtl,mshtml这几个概念还不清楚。
    比如,我知道webbrowser有IHTMLTable,IHTMLTableRow以及IHTMLTableCol接口,IHTMLTable接口可以insertrow和deleterow,但是,没有提供相应的列操作。msdn上说,col是一个block element,但非常奇怪的是,DHTML Collections里有cells和rows,就是没有cols。