Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.09.2011, 18:51
Аспирант
Отправить личное сообщение для leny Посмотреть профиль Найти все сообщения от leny
 
Регистрация: 29.04.2011
Сообщений: 91

Прокрутка страницы до id
Доброго времени суток, уважаемы программисты!
Нужно средствами javascript прокрутить страницу до id. Все равно плавная или моментальная прокрутка.
Вот пример кода:

<body>
<!--тут какой-та код -->
<div id="myId">.......</div>
</body>

Подскажите пожалуйста как это реализовать?

Или изменить готовое решение:

var speed=1
var currentpos=0,alt=1,curpos1=0,curpos2=-1

function initialize(){
    startit()
}

function scrollwindow(){
if (document.all)
    temp=document.body.scrollTop
else
    temp=window.pageYOffset
if (alt==0)
        alt=1
else
    alt=0
if (alt==0)
    curpos1=temp
else
    curpos2=temp
if (curpos1!=curpos2){
        currentpos=window.pageYOffset+speed
		window.scroll(0,currentpos)
}
}

function startit(){
    setInterval("scrollwindow()",10)
}
window.onload=initialize


этот код рабочий, но он прокручивает страницу до конца. Вот уже пол дня с ним мучаюсь, меняя вот эту переменную currentpos. Она , как я понял, определяет высоту страницы.

Заранее очень благодарен!
Ответить с цитированием
  #2 (permalink)  
Старый 03.09.2011, 19:00
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

1. Самый простой вариант: location.hash = 'myId';

2. А вот тебе функция, которая принимает элемент и скролит к нему:
function scrollToElement(theElement) {
    var selectedPosX = 0;
    var selectedPosY = 0;
  
    while (theElement != null) {
        selectedPosX += theElement.offsetLeft;
        selectedPosY += theElement.offsetTop;
        theElement = theElement.offsetParent;
    }
                        		      
    window.scrollTo(selectedPosX,selectedPosY);
}

Последний раз редактировалось ваый, 03.09.2011 в 19:10.
Ответить с цитированием
  #3 (permalink)  
Старый 03.09.2011, 20:25
Аспирант
Отправить личное сообщение для leny Посмотреть профиль Найти все сообщения от leny
 
Регистрация: 29.04.2011
Сообщений: 91

Спасибо, с первым разобрался, а вот со вторым нет.

Вот что я написал:

function scrollToElement(theElement) {
var selectedPosX = 0;
var selectedPosY = 0;
	   
while (theElement != null) {
selectedPosX += theElement.offsetLeft;
selectedPosY += theElement.offsetTop;
theElement = theElement.offsetParent;
}
                                     
window.scrollTo(selectedPosX,selectedPosY);
}


scrollToElement('myId');


Что не так?

Последний раз редактировалось leny, 03.09.2011 в 20:35.
Ответить с цитированием
  #4 (permalink)  
Старый 03.09.2011, 20:56
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

theElement - это DOM element, а не строка
Ответить с цитированием
  #5 (permalink)  
Старый 03.09.2011, 21:02
Аспирант
Отправить личное сообщение для leny Посмотреть профиль Найти все сообщения от leny
 
Регистрация: 29.04.2011
Сообщений: 91

без кавычек вставлял тоже не работает, если я правильно вас понял.
Ответить с цитированием
  #6 (permalink)  
Старый 03.09.2011, 21:06
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

тогда я дополню функцию. в неё можно передавать ID элемента или элемент.

function scrollToElement(theElement) {
*!*
    if (typeof theElement === "string") theElement = document.getElementById(theElement);
*/!*

    var selectedPosX = 0;
    var selectedPosY = 0;

    while (theElement != null) {
        selectedPosX += theElement.offsetLeft;
        selectedPosY += theElement.offsetTop;
        theElement = theElement.offsetParent;
    }

    window.scrollTo(selectedPosX, selectedPosY);
}


scrollToElement('myId'); // теперь это будет работать
Ответить с цитированием
  #7 (permalink)  
Старый 03.09.2011, 21:07
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

зря ты, melky, я хотел, чтоб он немного подумал сам, покопал туториалы..
Ответить с цитированием
  #8 (permalink)  
Старый 03.09.2011, 21:11
Аспирант
Отправить личное сообщение для leny Посмотреть профиль Найти все сообщения от leny
 
Регистрация: 29.04.2011
Сообщений: 91

работает!!! спасибо большое!!!
Ответить с цитированием
  #9 (permalink)  
Старый 03.09.2011, 21:13
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от ваый Посмотреть сообщение
зря ты, melky, я хотел, чтоб он немного подумал сам, покопал туториалы..
ну.. если человеку по работе это необходимо (верстальщег, к примеру.. сомнительный пример), то можно поправить. есть же узкоспециализированные специалисты, да ?)

да и не надо гнать каждого встречного на мануалы

вот александра хака можно.. уже 9000-й вопрос задает на форуме. его и надо посылать на мануалы
Ответить с цитированием
  #10 (permalink)  
Старый 03.09.2011, 21:22
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

александра хака нужно, да..
на самом деле каждого второго нужно. народ ленив и ничего сам сделать не может. это раздражает. хотя, я просто по себе сужу - никогда не спрашивал ничего, пока сам не сделал все что мог. а тут люди часто просто не тем занимаются. не зная основ, пытаются что-то делать. зачем? вот и сейчас парню совсем немного оставалось додумать, а он не смог сам. позорно? безусловно. потому что его вопрос решается даже простым гуглингом. делов то. а раз он не знает, что такое dom element и отличие его от строки, то это плохо. хотя с другой стороны, может это и в самом деле верстальщик-бедолага, тогда да, я много хочу. но все равно общими усилиями все заканчивается хорошо как правило
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прокрутка страницы Phoenix Общие вопросы Javascript 7 30.10.2010 14:30
Вычисление высоты страницы. keysi_ Events/DOM/Window 2 03.08.2010 18:03
Opera 10 и вертикальная прокрутка страницы dillinger jQuery 0 20.07.2010 21:48
Прокрутка страницы с помощью клавиш Mirgorod Events/DOM/Window 0 17.06.2010 22:39
Прокрутка страницы (событие) greatilya Элементы интерфейса 3 03.12.2008 12:10