滚动到DIV的底部每X秒

问题描述:

这里是我的代码:滚动到DIV的底部每X秒

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

setTimeout(scrollFix(), 500); 

你看到什么错?随着铬内置控制台我得到:

TypeError: Cannot read property 'scrollHeight' of null 

然后什么也没有发生。我应该指出,如果这件事很重要,元素的内容将会每隔一秒左右扩大。

编辑:我希望能够到书签JavaScript代码和只运行一次,并得到它的工作...

+0

您应该传递函数引用到'setTimeout'。传递'scrollFix()'意味着你正在调用它并将返回值传递给'setTimeout'。解决方法:'setTimeout(scrollFix,500);' – 2011-05-19 01:16:11

TypeError: Cannot read property 'scrollHeight' of null意味着document.getElementById("chat_box_scroll_region");没有找到与该ID的元素。使用Firebug/Chrome开发者工具来验证您的div具有的确切ID。

+0

我刚刚查看了网站的源代码,发现它实际上放置在

要报告的错误表明objDiv == null,这意味着,在执行的时候,没有一个名为“chat_box_scroll_region”元素在文档中存在。

如果您的目的是在500毫秒超时后运行scrollFix(),您将需要用引号引起来电,如setTimeout("scrollFix()", 500)。否则,scrollFix将立即被调用,并且它的返回值将被传入setTimeout。

一个更好的选择可能实际上是在身体的onload处理程序中执行该代码。 ,在HTML文档中,贴上像onload='javascript:scrollFix()'属性的body标签。更进一步,因为我假设你想要定期执行这个函数(虽然也许有更好的方法来处理一个滚动的聊天室),你也可以在scrollFix()函数的结尾调用setTimeout("scrollFix()", 500)

+0

谢谢!是的,有更好的方法来做到这一点。我发现的另一种方法是将scrollTop设置为像9999这样的高值,这样我只需运行一次代码即可。可能不是最好的方式,但它好多了。问题依然存在,虽然它不存在,但是我不能“发现”元素(是的,它拼写正确!)。加载后可能会添加元素,如果我没有错,我需要通过javascript或类似的东西重新加载HTML。 (不知道它叫什么,我相信在jQuery中有一个名为live()的函数可以做到这一点,但不知道..)。 – omp 2011-04-09 23:00:40

那是什么错误是告诉你的是,它无法找到ID为“chat_box_scroll_region”的元素。如果你已经把你提供的代码放在你定义“chat_box_scroll_region”元素的页面ABOVE中,这可能会发生。一旦页面被完全加载,你会希望让它调用函数。另外,如果您希望它不断尝试向下滚动,则需要告诉该函数再次调用自己。

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

我猜想这个消息就是这个意思。我不是一个JavaScript专业版,但如果一个元素被添加后页面已加载,不会我必须使用live()或类似的东西? (live()包含在jQuery中,所以应该有一种方法可以在纯javascript中做到这一点......),还是我错了?无论哪种方式,我找到了一个更好的方式,但我仍然有这个问题,即使它在那里,我也无法“找到”元素。我的新解决方案是将scrollTop设置为像9999这样的值,通过这样做我只需要运行一次代码。 – omp 2011-04-09 22:55:17

+0

是的,你会在这个实例中使用live()。我不确定你是否使用jQuery。 – 2011-04-09 22:57:02

+0

这不是我的网站,但我要使用它的网站不使用jQuery。有没有一个简单的JavaScript的方式来做到这一点? – omp 2011-04-09 23:02:35