Прокрутка страницы до 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 и отличие его от строки, то это плохо. хотя с другой стороны, может это и в самом деле верстальщик-бедолага, тогда да, я много хочу. но все равно общими усилиями все заканчивается хорошо как правило :) |
| Часовой пояс GMT +3, время: 01:05. |