Javascript 每X秒滚动到div的底部

Javascript 每X秒滚动到div的底部,javascript,scroll,intervals,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'

这是我的密码:

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代码添加到书签中,只需运行一次并使其正常工作…

类型错误:无法读取null的属性“scrollHeight”
意味着
document.getElementById(“聊天盒滚动区域”)
未找到具有该ID的元素。请使用Firebug/Chrome Developer工具验证您的div是否具有该ID。

TypeError:无法读取null的属性“scrollHeight”
表示
document.getElementById(“聊天盒滚动区域”)
未找到具有该ID的元素。请使用Firebug/Chrome Developer工具验证您的div是否具有该ID。

您报告的错误表明objDiv==null,这意味着在执行时,文档中不存在名为“chat\u box\u scroll\u region”的元素

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

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


更进一步,因为我假设您希望定期执行此函数(尽管可能有更好的方法来处理滚动聊天框),所以您还希望在scrollFix()函数结束时调用
setTimeout(“scrollFix()”,500)

您报告的错误指示objDiv==null,这意味着在执行时,文档中不存在名为“chat\u box\u scroll\u region”的元素

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

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


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

该错误告诉您的是,它找不到id为的元素“chat\u box\u scroll\u region”。如果您将提供的代码放在上面定义“chat\u box\u scroll\u region”元素的页面中,则可能会发生这种情况。您希望在页面完全加载后让它调用该函数

此外,如果您希望它不断向下滚动,则需要告诉函数再次调用自身

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

该错误告诉您的是,它找不到id为“chat\u box\u scroll\u region”的元素。如果您将提供的代码放在上面定义“chat\u box\u scroll\u region”元素的页面中,则可能会发生这种情况。您希望在页面完全加载后让它调用该函数

此外,如果您希望它不断向下滚动,则需要告诉函数再次调用自身

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

我猜这条消息的意思是这样的。我不是javascript专业人士,但如果在页面加载后添加了元素,我是否必须使用live()或类似的东西?(live()包含在jQuery中,因此应该有一种方法可以使用纯javascript来完成此操作…),还是我错了?无论哪种方法,我都找到了更好的方法,但我仍然存在一个问题,即我无法“找到”元素,即使它在那里。我的新解决方案是将scrollTop设置为9999这样的值,这样我只需运行代码一次。是的,您将使用live()在这个例子中。我不确定你是否在使用jQuery。这不是我的网站,但我要使用它的网站不使用jQuery。有没有简单的javascript方法可以做到这一点?我原始回复中的函数应该可以做到。但它没有。我放弃了!:/I我猜消息的意思是。我不是javascript专业人士,但如果添加了元素加载页面后,我是否必须使用live()或类似的东西?(live()包含在jQuery中,因此应该有一种方法可以用纯javascript实现…),或者我错了吗?无论哪种方法,我都找到了更好的方法,但我仍然有这个问题,我无法“找到”“元素,即使它在那里。我的新解决方案是将scrollTop设置为9999这样的值,这样我只需要运行一次代码。我不确定你是否在使用jQuery。这不是我的网站,但我要使用它的网站不使用jQuery。有没有一种简单的javascript方法可以做到这一点?我的原始回复中的函数应该可以做到。但是没有。我放弃/谢谢是的,有更好的方法。我发现的另一种方法是将scrollTop设置为像9999这样的高值,这样我只需运行一次代码。也许不是最好的方法,但更好。但问题仍然存在,即使元素在那里,我也无法“找到”它(是的,它拼写正确!)。元素可能会在加载后添加,如果我没有错的话,我需要通过javascript或类似的方式重新加载HTML。(不知道它叫什么,我相信jQuery中有一个名为live()的函数可以做到这一点,不过我不确定.)。谢谢!是的,有更好的方法。我发现的另一种方法是将scrollTop设置为像9999这样的高值,这样我只需运行一次代码。可能不是t