本帖最后由 priestmoon 于 2010-03-31 17:47:21 编辑

解决方案 »

  1.   

    题目的HTML代码:
    <body>
        <input id="txt" type="text" value="text value" style="float: left" />
        <div style="clear: both; float: left">
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
        </div>
    </body>
      

  2.   

    <body>
        <input id="txt" type="text" value="text value" style="float: left" />
        <div id="box1" style="display:none;clear: both; float: left;border:1px solid #ff0;background:#f49;">
            Pop up text width border <br />
            Pop up text width border <br />
            Pop up text width border <br />
        </div>
        <div style="clear: both; float: left">
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
        </div>
        <script>
            var id = document.getElementById('txt');
            var box = document.getElementById('box1');
            id.onfocus = function(){
                box.style.display = "block" ;
            };
            id.onblur = function(){
                box.style.display = "none" ;
            }
        </script>
    </body>
      

  3.   


    <script>
    window.onload=function(){
    var pad = document.getElementById("pad");
    var left = getAbsPos("txt", "left");
    var top = getAbsPos("txt", "top");
    var txt = document.getElementById("txt");
    pad.style.left = left;
    pad.style.top = top + txt.clientHeight;
    }
    function doOver(){
    document.getElementById("pad").style.display = "block";
    }
    function doOut(){
    document.getElementById("pad").style.display = "none";
    }
    function getAbsPos( oId, tl ) {
    var o = ((typeof oId).toLowerCase() == 'string') ? document.getElementById( oId ) : oId;
    var val = 0;
    var n = o.tagName || o.nodeName;
    while ( n.toLowerCase() != "body") {
    val += (tl == 'top') ? parseInt( o.offsetTop ) : parseInt( o.offsetLeft );
    o = o.parentNode;
    n = o.tagName || o.nodeName;
    }
    return val;
    }
    </script>
    <body>
        <input id="txt" type="text" value="text value" style="float:left" onmouseout="doOut()" onmouseover="doOver()"/>
        <div style="clear: both; float: left">
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
            a line of very very long text<br />
        </div>
    <div id="pad" style="display:none;position:absolute;z-index:100;top:0;left:0;width:300px;border:1px solid #F00;background:#FFBFFF;padding:10px">
    Pop up text with border<br>
    Pop up text with border<br>
    Pop up text with border<br>
    </div>
    </body>
      

  4.   

    >>4楼onfocus和onblur是焦点移动,题目中说是鼠标移出移入,应该是onmouseover和onmouseout。
    而且,不知道你有没有注意到:题目中的弹出框是盖住文本区的,而不是顶出文本区。
    感谢你的关注!
      

  5.   

    >>5楼Well done!
    还有其他解法没?
      

  6.   


    大哥:自己定义 CSS呀 
      

  7.   

    #5的会有边框的误差.改下 <script> 
     var doc = document.documentElement || document.body;
     window.onload=function(){ 
      var pad = document.getElementById("pad"); 
      var txt = document.getElementById("txt"); 
      pad.style.left = position(txt).left + 'px'; 
      pad.style.top = position(txt).bottom + 'px'; 
     } 
     function doOver(){ 
      document.getElementById("pad").style.display = "block"; 
     } 
     function doOut(){ 
      document.getElementById("pad").style.display = "none"; 
     }  var position = function(el) {
    var rect = el.getBoundingClientRect();
    return {bottom: Math.round(rect.bottom + (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)),
    left: Math.round(rect.left + (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0))};
     }
      </script> 
      <body> 
          <input id="txt" type="text" value="text value" style="float:left" onmouseout="doOut()" onmouseover="doOver()"/> 
          <div style="clear: both; float: left"> 
             a line of very very long text <br /> 
             a line of very very long text <br /> 
             a line of very very long text <br /> 
             a line of very very long text <br /> 
             a line of very very long text <br /> 
             a line of very very long text <br /> 
             a line of very very long text <br /> 
             a line of very very long text <br /> 
             a line of very very long text <br /> 
             a line of very very long text <br /> 
          </div> 
      <div id="pad" style="display:none;position:absolute;z-index:100;top:0;left:0;width:300px;border:1px solid #F00;background:#FFBFFF;padding:10px"> 
     Pop up text with border <br> 
     Pop up text with border <br> 
     Pop up text with border <br> 
      </div> 
      </body>