fetchOffset is not defined

245
01 июля 2017, 13:14

Давно смотрю на эту вот ракету с необычным подъемом вверх. Но, смущают некоторые ошибки в консоли, которые появляются при включении режима адаптивного дизайна.

Причем ошибка повторяется при скролле. Если с TypeError: scrolltoprocketmeluncur.style is undefined все в общем-то понятно, то, вот справится с fetchOffset is not defined не удается.

Сам скрипт целиком:

jQuery(window).scroll(function(){
    if(jQuery(window).scrollTop()<50){
        jQuery('#rocketmeluncur').slideUp(500);
    }else{
        jQuery('#rocketmeluncur').slideDown(500);
    }
    var ftrocketmeluncur = jQuery("#ft")[0] ? jQuery("#ft")[0] : jQuery(document.body)[0];
    var scrolltoprocketmeluncur = $('rocketmeluncur');
var viewPortHeightrocketmeluncur = parseInt(document.documentElement.clientHeight);
var scrollHeightrocketmeluncur = parseInt(document.body.getBoundingClientRect().top);
var basewrocketmeluncur = parseInt(ftrocketmeluncur.clientWidth);
var swrocketmeluncur = scrolltoprocketmeluncur.clientWidth;
if (basewrocketmeluncur < 1000) {
var leftrocketmeluncur = parseInt(fetchOffset(ftrocketmeluncur)['left']);
leftrocketmeluncur = leftrocketmeluncur < swrocketmeluncur ? leftrocketmeluncur * 2 - swrocketmeluncur : leftrocketmeluncur;
scrolltoprocketmeluncur.style.left = ( basewrocketmeluncur + leftrocketmeluncur ) + 'px';
} else {
scrolltoprocketmeluncur.style.left = 'auto';
scrolltoprocketmeluncur.style.right = '10px';
}
})
jQuery('#rocketmeluncur').click(function(){
    jQuery("html, body").animate({ scrollTop: '0px',display:'none'},{
            duration: 600,  
            easing: 'linear'
        });
    var self = this;
    this.className += ' '+"launchrocket";
    setTimeout(function(){
      self.className = 'showrocket';
    },800)
});

Если кто-то даст какие-то рекомендации, буду премного благодарен.

Answer 1

В общем, поковырял немного код и все ошибки поправил.

По факту, заменил 2 участка:

  • var leftrocketmeluncur = parseInt(ftrocketmeluncur.offsetLeft); - использовал .offsetLeft для получения расстояния до объекта в левом углу.
  • scrolltoprocketmeluncur.css('left', (basewrocketmeluncur + leftrocketmeluncur + "px")); } else { scrolltoprocketmeluncur.css('left', 'auto'); scrolltoprocketmeluncur.css('right', '10px'); - задаем стили при помощи jQuery

Если кому нужно будет, вот код целиком:

//ROCKET TO TOP
jQuery(window).scroll(function() {
    if (jQuery(window).scrollTop() < 50) {
        jQuery('#rocketmeluncur').slideUp(500);
    } else {
        jQuery('#rocketmeluncur').slideDown(500);
    }
    var ftrocketmeluncur = jQuery("#ft")[0] ? jQuery("#ft")[0] : jQuery(document.body)[0];
    var scrolltoprocketmeluncur = $('rocketmeluncur');
    var viewPortHeightrocketmeluncur = parseInt(document.documentElement.clientHeight);
    var scrollHeightrocketmeluncur = parseInt(document.body.getBoundingClientRect().top);
    var basewrocketmeluncur = parseInt(ftrocketmeluncur.clientWidth);
    var swrocketmeluncur = scrolltoprocketmeluncur.clientWidth;
    if (basewrocketmeluncur < 1000) {
        var leftrocketmeluncur = parseInt(ftrocketmeluncur.offsetLeft);
        leftrocketmeluncur = leftrocketmeluncur < swrocketmeluncur ? leftrocketmeluncur * 2 - swrocketmeluncur : leftrocketmeluncur;
        scrolltoprocketmeluncur.css('left', (basewrocketmeluncur + leftrocketmeluncur + "px"));
    } else {
        scrolltoprocketmeluncur.css('left', 'auto');
        scrolltoprocketmeluncur.css('right', '10px');
    }
});
jQuery('#rocketmeluncur').click(function() {
    jQuery("html, body").animate({
        scrollTop: '0px',
        display: 'none'
    }, {
        duration: 600,
        easing: 'linear'
    });
    var self = this;
    this.className += ' ' + "launchrocket";
    setTimeout(function() {
        self.className = 'showrocket';
    }, 800);
});
READ ALSO
IE выполняет requestAnimationFrame после отрисовки, а не до

IE выполняет requestAnimationFrame после отрисовки, а не до

В IE11 и Edge div в сниппете после клика становится зелёным, хотя не должен

286
Как правильно вывести слэш через js?

Как правильно вывести слэш через js?

День добрый! Имеется код:

557
onclick для div в методе класса js

onclick для div в методе класса js

Здравствуйте, прошу помощи, объяснений, примеров) Пишу слайдер своими силами для сайта (намеренно не использую библиотеки) на чистом js по возможности...

237
Блоки одинаковой высоты

Блоки одинаковой высоты

Если заполняется один из блоков, то оба блока принимают наибольшую высотуВариант с фиксированной высотой не подойдет

262