Предотвращение ошибки
Ребята, подскажите, как решить следующую задачу:
У меня следующий функционал: 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", но не понимаю как правильно это сделать. Помогите, пожалуйста решить данную задачу. |
странный код,
зачем setTimeout ? для чего reqSection = {}; |
s24344,
А зачем у вас setTimeout ? Вместо использования "try..catch" лучше написать правильный код |
Это просто пример. Мне интересна сама идея, возможно ли в месте, где будет ошибка, обработать этот момент.
|
try..catch используют в основном когда работают с внешними данными, тут он не к чему.
|
Спасибо.
|
Обработать-то легко
let reqSection = {}; try { let reqScroll = reqSection.offset().top - 300; } catch { reqScroll = 0; } alert(reqScroll); Но это замаскирует ошибки кода. |
Часовой пояс GMT +3, время: 08:15. |