Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скроллинг на javascript (https://javascript.ru/forum/misc/17120-skrolling-na-javascript.html)

Armen 06.05.2011 16:05

Скроллинг на javascript
 
Здравствуйте.
Бьюсь уже несколько дней, не могу понять, пожет вы, люди добрые натолкнете на мысл умную ...
Пытаюсь реализовать скроллинг элементов на странице сверху вниз и обратно. Есть код
<script type="text/javascript">
window.onload = function()
{	
	allLinks = document.getElementsByTagName('A'); // ищем все ссылки в документе	
	for( var i = 0; i < allLinks.length; i ++ )
	{
		var links = allLinks[i];
		
		if( (links.href && links.href.indexOf('/')) || (links.pathname == location.pathname) )
		{
			links.onclick = getClick; // если ссылка существует и содержит / и ведет никуда не ведет - добавляем событие		
		}	
	}	
}

function getScroll()
{
	window.scrollBy( 0, 20 );	// прокручиваем страницу вниз на 20px	
}

function getClick(elem) // ф-я получает рассположение элемента до верха страницы
{	
	var getHref = this.getAttribute('href').substring(1);
	var nameLinks = document.getElementsByTagName('A');
	
	for( var i = 0; i < nameLinks.length; i ++ )
	{
		var nameLink = nameLinks[i]
		if( nameLink.name && nameLink.name == getHref )
		{
			seachLink = nameLink.offsetTop; // получаем позицию элемента
		}			
	}
	var timer = setInterval('getScroll()', 20);	
}

</script>

<a href="/a1">Click 1</a>
<a href="/a2">Click 2</a>
<a href="/a3">Click 3</a>
<a href="/a4">Click 4</a>

    <div>
        <a name="a1">Section 1</a>
    </div>


    <div>
        <a name="a2">Section 2</a>
    </div>


    <div>
        <a name="a3">Section 3</a>
    </div>


    <div>
        <a name="a4">Section 4</a>
    </div>


Вопрос в следующем: я получаю позицию элемента, до которого мне нужно прокрутить, но как мне останавливать прокрутку при достижении этого элемента ? Когда запускать clearInterval ? Допустим я знаю, что мне нужно прокрутить страницу на 300px , как правильно нужно написать, чтобы при достижении прокрутки 300px скроллинг останавливался, а не прокручивал страницу дальше, как в моем случае?

Armen 06.05.2011 19:57

Что никто не знает ответ? Подобное кто-то сам реализовывал или все готовые заготовки используют?

melky 08.05.2011 00:32

*!*var max = 300;*/!*

function getScroll()
{
       *!*if(  window.pageYOffset > max ) return;*/!*

	window.scrollBy( 0, 20 );	// прокручиваем страницу вниз на 20px	
}

function getClick(elem) // ф-я получает рассположение элемента до верха страницы
{	
	var getHref = this.getAttribute('href').substring(1);
	var nameLinks = document.getElementsByTagName('A');
	
	for( var i = 0; i < nameLinks.length; i ++ )
	{
		var nameLink = nameLinks[i]
		if( nameLink.name && nameLink.name == getHref )
		{
			seachLink = nameLink.offsetTop; // получаем позицию элемента
		}			
	}
	var timer = setInterval('getScroll()', 20);	
}

Armen 12.05.2011 12:04

Цитата:

Сообщение от melky (Сообщение 103766)
*!*var max = 300;*/!*

function getScroll()
{
       *!*if(  window.pageYOffset > max ) return;*/!*

	window.scrollBy( 0, 20 );	// прокручиваем страницу вниз на 20px	
}

function getClick(elem) // ф-я получает рассположение элемента до верха страницы
{	
	var getHref = this.getAttribute('href').substring(1);
	var nameLinks = document.getElementsByTagName('A');
	
	for( var i = 0; i < nameLinks.length; i ++ )
	{
		var nameLink = nameLinks[i]
		if( nameLink.name && nameLink.name == getHref )
		{
			seachLink = nameLink.offsetTop; // получаем позицию элемента
		}			
	}
	var timer = setInterval('getScroll()', 20);	
}

Спасибо огромное !


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