Прокрутите до конца div каждые X секунд - PullRequest
1 голос
/ 10 апреля 2011

Вот мой код:

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 ]

1 голос
/ 10 апреля 2011

Эта ошибка говорит вам о том, что она не может найти элемент с идентификатором "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(); }
0 голосов
/ 10 апреля 2011

Ошибка, о которой вы сообщаете, указывает, что objDiv == null, что означает, что на момент выполнения в вашем документе не было элемента с именем "chat_box_scroll_region".

Если вы намерены запустить scrollFix () после истечения времени ожидания 500 мс, вам нужно заключить вызов в кавычки, как в setTimeout("scrollFix()", 500). В противном случае scrollFix будет просто вызван немедленно, а его возвращаемое значение будет передано в setTimeout.

На самом деле лучшим вариантом может быть выполнение этого кода в обработчике загрузки тела. т.е. , в вашем HTML-документе прикрепите атрибут, такой как onload='javascript:scrollFix()', к тегу body.

Более того, поскольку я предполагаю, что вы хотите регулярно выполнять эту функцию (хотя, возможно, есть более эффективные способы работы с прокручиваемым чатом), вы также захотите вызвать setTimeout("scrollFix()", 500) в конце вашего scrollFix () функция.

0 голосов
/ 10 апреля 2011

TypeError: Cannot read property 'scrollHeight' of null означает, что document.getElementById("chat_box_scroll_region"); не обнаружил элемент с таким идентификатором.Используйте Firebug / Chrome Developer Tools, чтобы убедиться, что ваш div имеет именно этот идентификатор.

...