Прокрутка страницы до 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. Она , как я понял, определяет высоту страницы. Заранее очень благодарен! |
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); } |
Спасибо, с первым разобрался, а вот со вторым нет.
Вот что я написал: 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'); Что не так? |
theElement - это DOM element, а не строка
|
без кавычек вставлял тоже не работает, если я правильно вас понял.
|
тогда я дополню функцию. в неё можно передавать 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'); // теперь это будет работать |
зря ты, melky, я хотел, чтоб он немного подумал сам, покопал туториалы..
|
:thanks: работает!!! спасибо большое!!!
|
Цитата:
да и не надо гнать каждого встречного на мануалы :) вот александра хака можно.. уже 9000-й вопрос задает на форуме. его и надо посылать на мануалы :) |
александра хака нужно, да..
на самом деле каждого второго нужно. народ ленив и ничего сам сделать не может. это раздражает. хотя, я просто по себе сужу - никогда не спрашивал ничего, пока сам не сделал все что мог. а тут люди часто просто не тем занимаются. не зная основ, пытаются что-то делать. зачем? вот и сейчас парню совсем немного оставалось додумать, а он не смог сам. позорно? безусловно. потому что его вопрос решается даже простым гуглингом. делов то. а раз он не знает, что такое dom element и отличие его от строки, то это плохо. хотя с другой стороны, может это и в самом деле верстальщик-бедолага, тогда да, я много хочу. но все равно общими усилиями все заканчивается хорошо как правило :) |
как говорится, люди должны помогать друг другу :) на этом форуме мы почти всё время это и делаем, за исключением интеллектуальных бесед (срача) по поводу оперы, работы, текущего поколения
и ваый, тебе (Вам, вообще то) было интересно ковыряться в коде и исправлять ошибки, когда оные возникали? всякие несуразности, тонкости, типа генерации случайного числа от нуля включая, до единицы, не включая. отвечу сам - если вы занимаетесь этим продолжительное время и профессионально, то, несомненно, да. Я, например, просто тащусь от кодинга :) |
да, конечно, приходится постоянно искать баги в своем коде, и так как это естественная часть работы программиста, то я научился получать от этого своего рода удовольствие.
и да - на этом форуме да тоже бывает прикольные задачки приходится решать, что здорово, потому что позволяет постоянно обновлять в памяти какие-то моменты. но я все равно больше нравится, когда человек сам больше работает, чем спрашивает. ну а помогать да, нужно, этим мы тут и занимаемся. |
$('#myId').on("click", function() { $('html, body').animate({scrollTop: $("#myId").offset().top}, 1000); }); |
Часовой пояс GMT +3, время: 17:34. |