Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не работает плавная прокрутка к якорю после загрузки страницы (https://javascript.ru/forum/jquery/64184-ne-rabotaet-plavnaya-prokrutka-k-yakoryu-posle-zagruzki-stranicy.html)

emptyindorill 25.07.2016 10:39

Не работает плавная прокрутка к якорю после загрузки страницы
 
Здравствуйте. Для плавной прокрутки к якорю после загрузки страницы использую вот это:
window.hashName = window.location.hash;
  window.location.hash = '';
  
  $(window).load(function () {
	$('html, body').animate({scrollTop: $(window.hashName).offset().top}, 2000);
	return false;
  });

А консоль выдаёт мне ошибку Uncaught TypeError: Cannot read property 'top' of undefined.

Использую jquery-2.2.0.min.js

Я только-только начинаю учить javascript, посмотрел в гугле варианты ошибок - но так ничего и не понял. Подскажите пожалуйста - в чём может быть дело?

dd_smol 25.07.2016 11:05

window.hashName = window.location.hash; - Что это такое?:blink:

Uncaught TypeError: Не удается прочитать свойство 'top' не определено.
$(window.hashName).offset().top

emptyindorill 25.07.2016 11:20

Как я понял (тут взял) это проверка на наличие прокручиваемого тэга.

dd_smol 25.07.2016 11:43

нет такого элемента на странице и свойство что вы считываете нет. Можно html страницы на которой этот скрипт работает.

emptyindorill 25.07.2016 12:13

Что-то я вообще перестал понимать( Я забыл указать что у меня указан якорь - window.location.hash = '#anchor';
И прокрутка происходит, но не плавно а скачком - тут.
Ошибка та же - как тогда сделать что бы плавная прокрутка была?
Скрипт находится после футера.

Spass 25.07.2016 12:24

window.location.hash = '';
   
  $(window).load(function () {
    $('html, body').animate({scrollTop: $('#anchor').offset().top}, 2000);
    return false;
  });


Так тоже не работает?

emptyindorill 25.07.2016 13:12

Переход на якорь есть а плавности нету.
И то если так -
window.location.hash = '#anchor';

рони 25.07.2016 13:44

Цитата:

Сообщение от Spass
Так тоже не работает?

верните страницу вверх перед load.
window.scrollTo(0,0);
  $(window).load(function () {
    $('html, body').animate({scrollTop: $('#anchor').offset().top}, 2000);
    return false;
  });

emptyindorill 25.07.2016 14:01

Цитата:

Сообщение от рони (Сообщение 423361)
верните страницу вверх перед load.
window.scrollTo(0,0);
  $(window).load(function () {
    $('html, body').animate({scrollTop: $('#anchor').offset().top}, 2000);
    return false;
  });

Блин, и это не работает.

рони 25.07.2016 14:13

emptyindorill,
значит нет jquery или уже нет
попробуйте заменить все $ на jQuery


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