每隔X秒滚动到div的底部

时间:2011-04-09 22:43:17

标签: javascript scroll intervals

这是我的代码:

function scrollFix() {
  var objDiv = document.getElementById("chat_box_scroll_region");
  objDiv.scrollTop = objDiv.scrollHeight;
}

setTimeout(scrollFix(), 500);
你知道有什么不对吗?使用chrome的内置控制台,我得到:

TypeError: Cannot read property 'scrollHeight' of null

然后没有任何反应。我应该指出,如果重要的话,元素的内容将每隔一秒左右扩展一次。

编辑:我希望能够为这个javascript代码添加书签并运行一次并让它正常工作......

3 个答案:

答案 0 :(得分:1)

该错误告诉您的是它无法找到ID为“chat_box_scroll_region”的元素。如果您已将此代码放在上面定义“chat_box_scroll_region”元素的页面中,则可能会发生这种情况。您希望在页面完全加载后调用该函数。

此外,如果您希望它不断尝试向下滚动,您需要告诉该函数再次调用自己。

function scrollFix() {   
  var objDiv = document.getElementById("chat_box_scroll_region");
  objDiv.scrollTop = objDiv.scrollHeight;
  setTimeout("scrollFix();", 500);
}
window.onload = function() { scrollFix(); }

答案 1 :(得分:0)

TypeError: Cannot read property 'scrollHeight' of null表示document.getElementById("chat_box_scroll_region");找不到具有该ID的元素。使用Firebug / Chrome开发者工具验证您的div是否具有该ID。

答案 2 :(得分:0)

您报告的错误表明objDiv == null,这意味着在执行时,您的文档中不存在名为“chat_box_scroll_region”的元素。

如果您打算在500ms超时后运行scrollFix(),则需要将引号括在引号中,如setTimeout("scrollFix()", 500)中所示。否则,将立即调用scrollFix,并将其返回值传递给setTimeout。

更好的选择实际上可能是在body onload处理程序中执行此代码。 即。,在您的HTML文档中,将onload='javascript:scrollFix()'之类的属性添加到body标记。

更进一步,因为我假设您想要定期执行此功能(尽管可能有更好的方法来处理滚动聊天框),您还需要在scrollFix末尾调用setTimeout("scrollFix()", 500) ()函数。