这是我的代码:
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代码添加书签并运行一次并让它正常工作......答案 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)
()函数。