不错,我的这个很类似聊天室。典型的聊天室显示聊天记录的要么是Window本身,要么是iframe,这两个对象的滚动有不少方法,比如scrollTo(),scrollBy(),scroll()。常见的写法是:....window.scroll(0, 65000) - 给一个足够大的滚动值。我用的是div,不支持上面的方法,且我觉得,要是用给极大值的方法,我把那个doScroll()循环几次就行了,可是这样子比较没意思。这个不是项目,希望能做的精致些,呵呵。

解决方案 »

  1.   

    非常感谢 xinyunyishui(心云意水) ,It works!但是似乎还有一点问题。我在innerHTML += GetMessage()之后立刻用theDiv.scrollTop = theDiv.scrollHeight,它的刷新似乎不及时,表现滚动条没有滚到底部,除非我等待1秒之后再用这句……
      

  2.   

    也许是处理innerHTML需要时间??
    稍等一秒钟嘛!
      

  3.   

    你的GetMessage()如果可以返回TR的话,给每TR 一个 ID
    然后document.all("rowID").scrollIntoView(true); 
    rowID是你自己设的,就可以了
      

  4.   

    我在innerHTML += GetMessage()之后立刻用theDiv.scrollTop = theDiv.scrollHeight,它的刷新似乎不及时,表现滚动条没有滚到底部,除非我等待1秒之后再用这句……--------------------
    用innerHTML的话,整个DIV里的HTML都会由IE重新解释一遍,所以会很费时。
    事实上楼主的要求只是不停的往后面加东西,所以用.insertAdjacentHTML效率会得到改善,因为IE并不需只重新解释DIV里的所有内容,而只需要解释新加的内容即可。
    代码如下,当加入的是一个marquee时,用.insertAdjacentHTML与用innerHTML效果会有明显不同。<script>
    function ShowMsg()
    {
        theDiv.insertAdjacentHTML("BeforeEnd","<br>"+document.all.helloText .value); 
        //theDiv.innerHTML += "<br>"+document.all.helloText .value;
        theDiv.doScroll("scrollbarPageDown"); 
    }
    </script>
    <div id="theDiv" style="width: 100%; height: 200px; overflow: auto;"></div>
    <input name=helloText value="<marquee>fdsafdsa</marquee>"><input type=submit value=ok onclick="ShowMsg()">
      

  5.   

    theDiv.scrollTop=theDiv.scrollHeight-----------------
    也可以用
    theDiv.scrollTop=1000000