为了得到所点击的的单元格的位置
我调用了var row = this.parentNode.rowIndex; 这些火狐和chrome都可以,但是在IE中就显示this.parentNode.rowIndex' 为空或不是对象
上网查了资料,说是

当html中节点缺失时,IE和火狐对parentNode的解释不同,例如
<form>
<table>
<input/>
</table>
</form>
火狐中input.parentNode的值为form, 而IE中input.parentNode的值为空节点”
上面这个例子哪里有节点缺失?为什么this.parentNode.rowIndex' 为空或不是对象 ,请多多指教javascript

解决方案 »

  1.   

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="gbk" />
    <title></title>
    <style> </style>
    </head>
    <body>
    <form>
    <table>
    <tr>
    <td></td>
    <td><input onclick="test(this)" /></td>
    <td><input onclick="test(this)" /></td>
    </tr>
    <tr>
    <td></td>
    <td><input onclick="test(this)" /></td>
    <td><input onclick="test(this)" /></td>
    </tr>
    </table>
    </form>
    <script>
    var test = function(t){
    alert( t.parentNode.parentNode.rowIndex )
    };
    </script>
    </body>
    </html>dom 要完整
      

  2.   

    DOM是完整但是乱嵌套了,这样浏览器解析成什么用开发人员工具看DOM结构就知道了
      

  3.   

    我终于弄明白了,之所以this.parentNode为null是因为:IE中DOM2级的this是window对象,而在火狐和chrome中,this代表的是发生事件的当前元素,所以使用
    function getEventTarget(){
      var event = window.event || arguments.callee.caller.arguments[0];
      var target = event.srcElement ? event.srcElement : event.target;
      return target;
    }
    得到target对象,再用target对象取代DOM2级事件处理函数中的this就可以了