滚动到div的底部不起作用

时间:2013-08-25 10:56:01

标签: javascript

function ereja(){
  var newscrollHeight2 = $("#messages")[0].scrollHeight;
  return newscrollHeight2;
}

var newscrollHeight = ereja();
var oldscrollHeight = $("#messages")[0].scrollHeight;

function merrmesazhet(){
  $('#messages').load(
    "nxirr_mesazhet.php?room=<?php echo urlencode($dhoma24); ?>"
  );     
  setTimeout(ereja, 1000);
  if( newscrollHeight != oldscrollHeight ){ 
    $("#messages").scrollTop($("#messages")[0].scrollHeight); 
  }
}

这段代码有什么问题?为什么它不起作用?当用户写入新消息时,我试图滚动到div的底部。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

假设您实际上正在呼叫merrmesazhet()并且您正在IE>=8进行测试,因为较低版本不支持scrollHeight。然后你的主要问题是使用setTimeout,它基本上每秒调用ereja并且 nothing

确实你甚至不需要JS计时器 - 你正在使用支持回调的jQuery load函数(在成功加载时执行一次而不是反复)。您在其当前表单中的if语句将始终评估为 false ,因为它不在计时器上执行的函数内。

这样的事可能适合你:

var oldscrollHeight = $("#messages")[0].scrollHeight;

function merrmesazhet(){
    $('#messages').load(
        'nxirr_mesazhet.php?room=<?php echo urlencode($dhoma24); ?>',
        function(){
            var newscrollHeight = $("#messages")[0].scrollHeight;
            if( newscrollHeight != oldscrollHeight ){
                $("#messages").scrollTop($("#messages")[0].scrollHeight);
            }
        }
    );
}

jsFiddle