先不废话 代码如下:
- <html>
- <head>
- <script type="text/javascript" >
- function init(){
- var tab0=document.getElementById('tab0');
- var tr1=document.getElementById('tr1');
- var td3=document.getElementById('td3');
- var idx_tr1=tr1.rowIndex;
- var idx3= td3.cellIndex;
- alert( tab0.tBodies[0].rows[idx_tr1].id + '\n'+ tr1.cells[idx3].id );
- }
- </script>
- </head>
- <body onload="init()">
- <table id="tab0" border="1" width="300">
- <tr id="tr0" style="display:none;"><td>.</td><td>.</td><td>.</td><td>.</td><td>.</td></tr>
- <tr id="tr1">
- <td id="td0">0</td>
- <td id="td1">1</td>
- <td id="td2" style="display:none;">2</td>
- <td id="td3">3</td>
- <td id="td4">4</td>
- </tr>
- </table>
- </body>
- </html>
运行后
ie里提示 tr1 td2
ff safari opera下都提示 tr1 和 td3
---------------------------------
总结: 也就是说 在IE里 ,当table中有隐藏的td时 , cellIndex这个属性不再可靠.
但是 当table中有隐藏的tr时 , rowIndex这个属性依然是可靠的.
ie里对 td 隐藏后的 ,在计算 cellIndex时 会当作那个隐藏的td被移除了一样计算
但是 tr的cells集合内却并没有移除那个隐藏的td.
IE的做法实在是 让人无语了