Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.07.2018, 12:54
Профессор
Отправить личное сообщение для s24344 Посмотреть профиль Найти все сообщения от s24344
 
Регистрация: 12.08.2015
Сообщений: 206

Предотвращение ошибки
Ребята, подскажите, как решить следующую задачу:
У меня следующий функционал:
class doctorsNavModule {

  constructor () {}

  handler () {

    const
      _this = this;

    const
      trigger = $('.submenu__link-nav-trigger');

    trigger.on('click', function (event) {
      event.preventDefault();

      let
        $this = $(this),
        targer = $this.data('name'),
        reqSection = {};

      setTimeout(function() {
        $('[data-target]').each(function () {
          let
            $this = $(this),
            trigger = $this.data('target');

          if (targer == trigger) {
            reqSection = $this;
          }
        });

        let reqScroll = reqSection.offset().top - 300; // Uncaught TypeError: reqSection.offset is not a function

        console.log(reqScroll);

        $('html, body').animate({
          scrollTop: reqScroll
        });

      }, 500);

    });

  }

  init () {
    this.handler();
  }

}

let doctorsNavInit = new doctorsNavModule();

doctorsNavInit.init();


И, при определенных действиях, следующий код:
let reqScroll = reqSection.offset().top - 300;

выдает ошибку:
Uncaught TypeError: reqSection.offset is not a function

После чего приложение падает.
Я знаю (думаю), что данный момент можно обработать, чтобы код не ломался с помощью перехвата ошибок, "try..catch", но не понимаю как правильно это сделать.
Помогите, пожалуйста решить данную задачу.

Последний раз редактировалось s24344, 05.07.2018 в 12:57.
Ответить с цитированием
  #2 (permalink)  
Старый 05.07.2018, 13:00
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

странный код,
зачем setTimeout ?
для чего reqSection = {};
Ответить с цитированием
  #3 (permalink)  
Старый 05.07.2018, 13:03
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

s24344,
А зачем у вас setTimeout ?

Вместо использования "try..catch" лучше написать правильный код
Ответить с цитированием
  #4 (permalink)  
Старый 05.07.2018, 13:26
Профессор
Отправить личное сообщение для s24344 Посмотреть профиль Найти все сообщения от s24344
 
Регистрация: 12.08.2015
Сообщений: 206

Это просто пример. Мне интересна сама идея, возможно ли в месте, где будет ошибка, обработать этот момент.
Ответить с цитированием
  #5 (permalink)  
Старый 05.07.2018, 13:32
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

try..catch используют в основном когда работают с внешними данными, тут он не к чему.
Ответить с цитированием
  #6 (permalink)  
Старый 05.07.2018, 13:35
Профессор
Отправить личное сообщение для s24344 Посмотреть профиль Найти все сообщения от s24344
 
Регистрация: 12.08.2015
Сообщений: 206

Спасибо.
Ответить с цитированием
  #7 (permalink)  
Старый 05.07.2018, 13:41
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Обработать-то легко
let reqSection = {};
try {
   let reqScroll = reqSection.offset().top - 300;
}
catch {
    reqScroll = 0;
}
alert(reqScroll);

Но это замаскирует ошибки кода.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки js блокируют работу виджета jmullins Общие вопросы Javascript 3 26.10.2015 20:28
Ошибки верстки, едет верстка в IE9 Sanu0074 (X)HTML/CSS 3 01.04.2015 08:33
генерация и логирование ошибки Hapson Общие вопросы Javascript 31 03.04.2014 17:20
Ошибки при асинхронных AJAX запросах San4ezy Общие вопросы Javascript 4 27.03.2014 21:48
Что за ошибки в скриптах на сайте? razorg1991 Ваши сайты и скрипты 4 30.08.2013 13:37