Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не скролит элемент (https://javascript.ru/forum/misc/20962-ne-skrolit-ehlement.html)

ацкий 23.08.2011 23:29

Не скролит элемент
 
Добрый вечер!
Проблема возникла: не получается проскролить элемент. Вот код:
var i = 0;
var textBlock;

function init()
{  
  document.getElementById(0).hidden = false;
  textBlock = document.getElementById(0);
}
function scrollBarPosition()
{
if(textBlock.scrollTop >= textBlock.offsetHeight-document.documentElement.clientHeight)
  {
    showNextTextBlock();
  }

} Сначала вызывается init(), затем вторая функция. Почему-то textBlock.scrollTop всегда равняется 0, хотя визуально элемент прокручивается...

devote 23.08.2011 23:47

Цитата:

Сообщение от ацкий
document.getElementById(0);

id у элементов не может начинаться с числа

ацкий 24.08.2011 09:21

Странно, у меня он определяется.

ацкий 24.08.2011 09:43

Без разницы, так тоже нет: alert(document.getElementById("b_" + i).scrollTop);

monolithed 24.08.2011 10:30

<div id="div" />

<script>
var div = document.getElementById('div'), i = 100;

while(i--) {
  div.parentNode.insertBefore(document.createElement('br'), div);
}
// прокручиваем вниз
window.scrollTo(0, document.documentElement.scrollHeight);

// прокручиваем вверх
document.onclick = function() {
    *!*
    window.scrollTo(0, document.documentElement.srollTop);
    */!*
};
</script>

ацкий 24.08.2011 10:46

Не понял к чему предыдущий код. У меня скрипт сообщает мне, что элемент ДИВ не прокручен (всегда 0), хотя я его прокрутил. В общем, если не сложно, исправьте плиз мое творение.
var i = 0;
var textBlock;

function scrollBarPosition() //вызывается при событии onscroll
{
  //alert(textBlock.scrollTop); //всегда 0...
  if(textBlock.scrollTop >= textBlock.offsetHeight-document.documentElement.clientHeight)
  {
    showNextTextBlock();
  }
  else if(textBlock.scrollTop <= document.documentElement.clientHeight)
  {
    showPrevTextBlock();
  }
  if(textBlock.scrollTop > textBlock.offsetHeight)
  {
    i++;
    textBlock = document.getElementById("b_" + i);
  }
  else if(textBlock.scrollTop < -document.documentElement.clientHeight)
  {
    i--;
    textBlock = document.getElementById("b_" + i);
  }
}

function showPrevTextBlock()
{
  if(i-1 >= 0) document.getElementById("b_" + i-1).hidden = false;
  document.getElementById("b_" + i+1).hidden = true;
  
}

function showNextTextBlock()
{
  if(i-1 >= 0) document.getElementById("b_" + i-1).hidden = true;
  document.getElementById("b_" + i+1).hidden = false;
}

function init() //при загрузки страницы вызывается эта функция
{  
  document.getElementById("b_" + 0).hidden = false;
  textBlock = document.getElementById("b_" + 0); 
}

ацкий 24.08.2011 10:56

Если кому-то интересно зачем так изгаляться, то объясняю. Это скрипт для читалки книг. Чтобы книга быстрее отображалась на экране, быстрее менялось расположение слов и предложений при изменении шрифта и размер окна. И суть такова: по мере прокрутки(в зависимости от направления) появляется следующий блок текста, и исчезает тот, который уже не виден на экране.

ацкий 24.08.2011 21:16

Никто не поможет?

melky 25.08.2011 01:14

не на тот элемент смотрите. я с этим 3 раза точно сталкивался

вот небольшой пример. надеюсь, вам что-нибудь прояснит.

обработчики навешаны на оба элемента.


Часовой пояс GMT +3, время: 17:24.