2016-06-23 2 views
1

Когда я использую указанную выше функцию в javascript div для автоматической прокрутки в поле чата , но я не могу прокручивать изображение донизу.AutoScrolling in javascript div

window.setInterval(function() { 
var elem = document.getElementById('chatlog'); 
elem.scrollTop = elem.scrollHeight; 
}, 10); 

Чатлог - это div в моем коде, и я поставил выше функцию для прокрутки ответов. Теперь я не могу прокручивать вверх.

+0

Что вы пытаетесь сделать? Можете ли вы объяснить немного больше? –

+1

chatlog - это div в моем коде, и я поставил выше функцию для прокрутки ответов сейчас, я не могу прокрутить вверх – Abdul

+2

Можете ли вы сделать скрипку? – Patrick2607

ответ

2

Это логическая ошибка. В вашем коде каждые 10 мс ваш скрипт будет прокручивать div вниз. Существует множество вариантов реализации поведения автопрокрутки. Один из них использует флаг, который будет установлен checkBox (autoscroll). Если checkBox выбран, сценарий будет прокручиваться вниз, если не выбранный скрипт ничего не сделает.

Что-то вроде:

window.setInterval(function() { 
if (needAutoScroll) { 
    var elem = document.getElementById('chatlog'); 
    elem.scrollTop = elem.scrollHeight; 
} 
}, 10); 
+0

Возможно, было бы неплохо автоматически установить флажок при прокрутке вниз (если он ранее не был снят вручную) и автоматически снимите флажок при запуске прокрутки. Это более сложная логика, поэтому потребуется больше объяснений. –

+0

Да, это возможно :-) Только вопрос был: теперь я не могу прокручивать вверх. Поэтому я представил одно из самых простых решений. – Sabik

+0

Конечно. Просто вдохновил ваш ответ :) Привет! –

0

Моя догадка, так как она прокручивается вниз к нижней части DIV каждый второй, вы не можете прокручивать вверх. Поэтому при прокрутке вверх вы должны очистить функцию setInterval.

Вы можете попробовать это у вас chatlog div.

<div id="chatlog" onscroll="myStopFunction()">

function myStopFunction() { 

if document.body.scrollTop <= 0 { 
console.log("scrolling down") 
} else { 
console.log("scrolling up"); 
clearInterval(myVar); 
} 

} 

Снова на прокрутки вниз вы можете вызвать функцию setInterval.