应该遍历所有的offsetParent,相加offsetLeft,设置document.getElementById("tips").style.left

解决方案 »

  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" xml:lang="en" lang="en">
    <head>
    <title></title>
    <style type="text/css">
    *{
    margin:0px;padding:0px;font-size:12px;
    }
    input{
    width:100px;height:20px;border:1px solid #ccc;
    }
    </style>
    </head>
    <body>
    <script language="javascript">
    function tips(id,str){
    var l=document.getElementById(id).offsetLeft+100;
    var t=document.getElementById(id).offsetTop-10;
    document.getElementById("tips").innerHTML="提示:"+str;
    document.getElementById("tips").style.left=l+"px";
    document.getElementById("tips").style.top=t+"px";
    document.getElementById("tips").style.display="";
    }
    function outtips(){
    document.getElementById("tips").style.display='none';
    }
    </script>
    <div id="tips" style="position:absolute;border:1px solid #ccc;padding:0px 3px;color:#f00;display:none;height:20px;line-height:20px;background:#fcfcfc"></div>
    <br />
    <br />
    <br />
    <br />
    <br />
    <table width="45%"  border="0">
      <tr>
        <td>姓名:</td>
        <td><input type="text" id="username" onfocus="tips('username','姓名长度最多16个字符')" onblur="outtips()" /></td>
      </tr>
      <tr>
        <td>密码:</td>
        <td><input type="password" id="password" onfocus="tips('password','密码长度必须在3-18位之间')" onblur="outtips()" /></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
    </table>
    <p>等待 
      <input type="sss" id="sss" onfocus="tips('sss','密码长度必须在3-18位之间')" onblur="outtips()" />
    </p>
    </body>
    </html>
      

  2.   

    <!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" xml:lang="en" lang="en">
    <head>
    <title></title>
    <style type="text/css">
    *{
    margin:0px;padding:0px;font-size:12px;
    }
    input{
    width:100px;height:20px;border:1px solid #ccc;
    }
    </style>
    </head>
    <body>
    <script language="javascript">
    function calculateSumOffset(item, offsetName) {
    var totalOffset = 0;
    do {
    totalOffset += eval('item.'+offsetName);
    item = eval('item.offsetParent');
    } while (item != null);
    return totalOffset;
    }
    function tips(str){
    var obj = event.srcElement;
    var l = calculateSumOffset(obj, "offsetLeft") + obj.offsetWidth;
    var t= calculateSumOffset(obj, "offsetTop");
    document.getElementById("tips").innerHTML="提示:"+str;
    document.getElementById("tips").style.left=l;
    document.getElementById("tips").style.top=t;
    document.getElementById("tips").style.display="";
    }
    function outtips(){
    document.getElementById("tips").style.display='none';
    }
    </script>
    <div id="tips" style="position:absolute;border:1px solid #ccc;padding:0px 3px;color:#f00;display:none;height:20px;line-height:20px;background:#fcfcfc"></div>
    <br />
    <br />
    <br />
    <br />
    <br />
    <table width="45%"  border="0">
      <tr>
        <td>姓名:</td>
        <td><input type="text" id="username" onfocus="tips('姓名长度最多16个字符')" onblur="outtips()" /></td>
      </tr>
      <tr>
        <td>密码:</td>
        <td><input type="password" id="password" onfocus="tips('密码长度必须在3-18位之间')" onblur="outtips()" /></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
    </table>
    <p>等待 
      <input type="sss" id="sss" onfocus="tips('密码长度必须在3-18位之间')" onblur="outtips()" />
    </p>
    </body>
    </html>