页面下面有多个table,我想得到鼠标在其中一个table中移动时的坐标,是相对这个table内部的坐标,并且考虑滚动条的因素ie下实现很简单,直接用event.offsetX和event.offsetY即可。但是在firefox一直没有成功,网上的方法很多,比较公认的方法为:posx=event.clientX+document.body.scrollLeft-document.body.clientLeft; 
posy=event.clientY+document.body.scrollTop-document.body.clientTop; 但我一直没有得到正确结果,并且发现document.body.clientLeft与document.body.clientTop总是返回0,请帮我看下吧一直调不通,心急如焚,谢谢

解决方案 »

  1.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script type="text/javascript">
    function getTablePosition(id){
    var table=document.getElementById(id);
    var style="";
    if(document.defaultView&&document.defaultView.getComputedStyle){
    style=document.defaultView.getComputedStyle(table);
    }else{
    style=table.currentStyle;
    }
    return{
    'x':style.left=='auto'?table.offsetLeft:style.left,
    'y':style.top=='auto'?table.offsetTop:style.top
    }
    }
    function getMousePosition(e){
    var a=e||window.event;
    var x=a.pageX||(a.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft));
    var y=a.pageY||(a.clientY+(document.documentElement.scrollTop||document.body.scrollTop));
    return{
    'x':x,
    'y':y
    }
    }
    function init(){
    var table=document.getElementById("test");
    table.onmousemove=function(e){
    var tablePosition=getTablePosition("test");
    var mousePosition=getMousePosition(e);
    var x=parseInt(mousePosition.x)-parseInt(tablePosition.x);
    var y=parseInt(mousePosition.y)-parseInt(tablePosition.y);
    document.getElementsByTagName("div")[0].innerHTML=x+":"+y;
    }
    }
    window.onload=init;
    </script>
    </head><body>
    <div></div>
    <table id="test" cellspacing="0" border="1">
    <tr>
         <th>id</th>
            <th>name</th>
            <th>score</th>
            <th>comment</th>
        </tr>
        <tr>
         <td>1</td>
            <td>zzg</td>
            <td>85</td>
            <td>A</td>
        </tr>
        <tr>
         <td>2</td>
            <td>lx</td>
            <td>70</td>
            <td>B</td>
        </tr>
        <tr>
         <td>3</td>
            <td>cj</td>
            <td>90</td>
            <td>M</td>
        </tr>
        <tr>
         <td>4</td>
            <td>wjx</td>
            <td>80</td>
            <td>A</td>
        </tr>
        <tr>
         <td>5</td>
            <td>hsl</td>
            <td>90</td>
            <td>G</td>
        </tr>
    </table>
    </body>
    </html>这样试试
      

  2.   


    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript">
        window.onload = function(){
            document.getElementById('_table').onmousemove = function(e){
                e = e || event;
                alert(e.clientX + ' ' + e.clientY );
            }
        }
    </script>
    </head> 
    <body>
        <table id="_table" border="1" width="100%">
            <tr>
                <td>1212</td>
                <td>1212</td>
                <td>1212</td>
            </tr><tr>
                <td>1212</td>
                <td>1212</td>
                <td>1212</td>
            </tr><tr>
                <td>1212</td>
                <td>1212</td>
                <td>1212</td>
            </tr><tr>
                <td>1212</td>
                <td>1212</td>
                <td>1212</td>
            </tr>
        </table>
    </body>
    </html>
      

  3.   

    直接简单,用jquery的offset();就可以获取了
      

  4.   


    谢谢,你的示例可用,但是我现在需要在table中放一个img,然后鼠标经过img的时候触发onmousemove再判断位置,核心要求就是在img的左上角实现(0,0),但用你的代码执行getTablePosition()时,也只是得到img距离所在table的距离,而不是距离整个页面的距离,最终显示结果还是不对
      

  5.   


    这个不行我需要实现的是ie下offsetX的效果
      

  6.   

    把table的id放在img上试试 table的id去掉
      

  7.   


    不行,得到的是img距离table的偏移,不过我已经解决了,从网上找到了一个代码,多个函数嵌套用到了
    function getPageCoord(element) 
    {
      var coord = {x: 0, y: 0};
      while (element)
      {
        coord.x += element.offsetLeft;
        coord.y += element.offsetTop;
        element = element.offsetParent;
      }
      return coord;
    }感谢大家的帮助