<script type="text/javascript">
/*
*  只写我疑问部分的代码,其他省略
*  要求点击表头(th)时获取该列的单元格的内容
*  正常情况下没有<!--     <td>0</td>-->注释时正常获取
*  为什么当我表头与与之对应的列的<td></td>也注释后,点击注释列后的列时,orderNum获取表头列是正常的,
*  而却读不到对应的列的内容了,具体到下面的就是点击THEY时读的都是空值了,而这个时候为了要读到它把orderNum+1
*  就可以了,但是为什么<th>部分有正常?可以过滤掉注释内容,难道<td>部分就不能过滤掉吗?按说是不可能的,不知
*  该题怎么解决。
*/
function sortTable(celItem){
    var prtObj = celItem.parentNode.parentNode.parentNode;   
    var tbody = prtObj.all.tags('tbody'); 
    var cTrObj = tbody[0].childNodes; 
    var orderNum = celItem.cellIndex;  
    alert(orderNum);
    for( var i = 0 ; i < cTrObj.length ; i ++ ){
        getText = cTrObj[i].childNodes[orderNum].innerText;  //  这里是怎么回事?
        alert(getText);
    }}
</script>
<table  id="gbResult" border="0">
        <thead>
                        <tr>
                                <th>WE</th>
                                <th onclick="sortTable(this)" style="cursor:hand">US</th>
                             <!--   <th onclick="sortTable(this)">YOU</th>-->
<th onclick="sortTable(this)">THEY</th>
                  </tr>        
          </thead>
          <tbody id="sortContent">
                  <tr>  
                          <td>+</td>
                          <td>ac+1</td>
                      <!--       <td>0</td>-->
                          <td>310</td>
                  </tr>
  <tr>
                          <td>0.2</td>
                          <td>bc</td>
                     <!--      <td>3</td>-->
                          <td>5555</td>
                  </tr>
                  <tr>
                          <td>1</td>
                          <td>ac1</td>
                     <!--        <td>0</td>-->
                          <td>999</td>
                  </tr>
             </tbody> 
   </table>

解决方案 »

  1.   

    虽然是注释,但是还是会作为一个节点,cTrObj[i].childNodes包含了注释信息
    getText = cTrObj[i].childNodes[orderNum].innerText;
    ===》 
    getText = cTrObj[i].cells[orderNum].innerText;
      

  2.   

    对,算节点LZ可以
    alert(cTrObj[i].childNodes[orderNum].outerHTML);//这里可以看到节点的全部信息
    ;getText = cTrObj[i].childNodes[orderNum].innerText;  //  这里是怎么回事?
      

  3.   


    我在1L不是已经贴了代码了吗?
    getText = cTrObj[i].cells[orderNum].innerText;
      

  4.   

    不对啊? cTrObj[i].childNodes[orderNum],应当就是第几个节点嘛,这个时候orderNum都已经是注释后的那个也即第4列(值为3),那它不是读取第3个节点的值吗?既然读取第3个节点,那就应当是310   5555   999了,就不会是注释的那列了,这个有问题吗?
      

  5.   

    恩,是的,cells可以了。哦,还是我错了,刚才的疑问是多余的。谢谢你!
      

  6.   

    var orderNum = celItem.cellIndex;//值为2,而不是3