как лечится ошибка? Uncaught TypeError: Cannot read property 'top' of undefined

Тема в разделе "Мегафлуд", создана пользователем gordy, 1 фев 2020.

  1. gordy

    gordy

    Регистр.:
    25 авг 2015
    Сообщения:
    223
    Симпатии:
    23
    подключаю функцию отдельным файлом,
    ошибка в этой строчке

    breakpoint = _.options.revealPosition !== 'bottom' ? _.revealElement.offset().top : _.revealElement.offset().top + _.revealElement.height();

    а именно в этом месте .top + _.revealElement.height();

    PHP:
    (function($) {
        function 
    mScrollTop(elementsettings) {

            var 
    this,
                
    breakpoint;
            var 
    scrollTo 0;

            
    _.btnClass '.material-scrolltop';
            
    _.revealClass 'reveal';
            
    _.btnElement = $(_.btnClass);

            
    _.initial = {
                
    revealElement'body',
                
    revealPosition'top',
                
    padding0,
                
    duration600,
                
    easing'swing',
                
    onScrollEndfalse
            
    }

            
    _.options = $.extend({}, _.initialsettings);

            
    _.revealElement = $(_.options.revealElement);
            
    breakpoint _.options.revealPosition !== 'bottom' _.revealElement.offset().top _.revealElement.offset().top _.revealElement.height();
            
    scrollTo element.offsetTop _.options.padding;

            $(
    document).scroll(function() {
                if (
    breakpoint < $(document).scrollTop()) {
                    
    _.btnElement.addClass(_.revealClass);
                } else {
                    
    _.btnElement.removeClass(_.revealClass);
                }
            });

            
    _.btnElement.click(function() {
                var 
    trigger true;
                $(
    'html, body').animate({
                    
    scrollTopscrollTo
                
    }, _.options.duration_.options.easing, function() {
                    if (
    trigger) { // Fix callback triggering twice on chromium
                        
    trigger false;
                        var 
    callback _.options.onScrollEnd;
                        if (
    typeof callback === "function") {
                            
    callback();
                        }
                    }
                });
                return 
    false;
            });
        }

        $.
    fn.materialScrollTop = function() {
            var 
    this,
                
    opt arguments[0],
                
    _.length,
                
    0;
            if (
    typeof opt == 'object' || typeof opt == 'undefined') {
                
    _.materialScrollTop = new mScrollTop(_opt);
            }
            return 
    _;
        };
    }(
    jQuery));


    в главный файл index.html добавляю

    PHP:
       $(document).ready(function() {
          $(
    'body').materialScrollTop({
              
    revealElement'header',
              
    revealPosition'bottom',
              
    onScrollEnd: function() {
                  
    console.log('Scrolling End');
              }
          });
      });
     
  2. gordy

    gordy

    Регистр.:
    25 авг 2015
    Сообщения:
    223
    Симпатии:
    23
    с одной стороны ошибка понятна, с другой стороны, непонятно, что делать с данным top элементом
     
  3. Sorcus

    Sorcus Sorcus. A New Beginning.

    Moderator
    Регистр.:
    10 июл 2011
    Сообщения:
    485
    Симпатии:
    871
    У тебя функция offset() для элемента revealElement возвращает undefined.
    А вот почему это происходит - хз.
    У тебя либо элемент отсутствует в принципе, либо скрипт находится перед элементом.
     
    gordy нравится это.
  4. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    503
    Симпатии:
    1.195
    Что возвращает _.revealElement.offset()?
    Есть элемент _.revealElement вообще?
     
    gordy нравится это.
  5. gordy

    gordy

    Регистр.:
    25 авг 2015
    Сообщения:
    223
    Симпатии:
    23
    спасибо за подсказки, все устранил и заработало)))