Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Исполнить Callback (https://javascript.ru/forum/misc/71971-ispolnit-callback.html)

Orion55 26.12.2017 08:10

Исполнить Callback
 
Всем привет.
Есть функция для скролинга в меню
scrollTo: function (e, i) {
            var o = t(e).offset().top;
t("html, body").animate({scrollTop: o}, this.config.scrollSpeed, this.config.easing, i);
}

У неё 2 параметра.
e – метка меню
И функция callback
i - function () {
    o.config.changeHash && (e.location.hash = r), o.bindInterval(), o.config.end && o.config.end()
}


Всё хорошо, только в e постоянно приходит «#undefined»
И возникает ошибка
"Uncaught TypeError: Cannot read property 'top' of undefined"
Как исправить ошибку или просто отловить #undefined и просто выполнить callback-функцию?
P.S. Код не мой, а достался "по наследству".

ksa 26.12.2017 08:43

Цитата:

Сообщение от Orion55
или просто отловить #undefined и просто выполнить callback-функцию?

Как вариант...

scrollTo: function (e, i) {
	if (e==undefined) {
		i();
	} else {
	var o = t(e).offset().top;
	t("html, body").animate({scrollTop: o}, this.config.scrollSpeed, this.config.easing, i);
	};
};

Orion55 26.12.2017 09:38

Я в принципе так и сделал, только
i();
не работает :cray:

ksa 26.12.2017 10:26

Цитата:

Сообщение от Orion55
i();

не работает

Бивас, тест! (с) :D

var test=function(){alert('Ok');};
(function(Fnc){
	alert('Start');
	Fnc();
})(test);

Однако все работает...

Orion55 26.12.2017 10:53

Хорошо, не корретно выразился, функция
function () {
    o.config.changeHash && (e.location.hash = r), o.bindInterval(), o.config.end && o.config.end()
}

Должна переадресовывать на другую страницу, но что-то не переадресовывает

laimas 26.12.2017 11:04

hash, это якорь на странице, навигация внутри нее, а не ссылка на новую страницу.

ksa 26.12.2017 13:15

Цитата:

Сообщение от Orion55
o.config.changeHash && (e.location.hash = r), o.bindInterval(), o.config.end && o.config.end()

Зачем вообще такой ниндзя-стайл? :blink:

ksa 26.12.2017 13:17

Цитата:

Сообщение от Orion55
Должна переадресовывать на другую страницу, но что-то не переадресовывает

Так если у тебя
e==undefined

В той строке просто будет ошибка.


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