jQuery почему .offset() не возвращает значение?

#javascript #jquery #variables #undefined

Вопрос:

Привет, я получаю ошибку JS в инспекторе браузера. Но я не понимаю, что не так с моим кодом Jquery. И почему он считает эту переменную неопределенной … Кто-нибудь может мне помочь ?

Код работает хорошо; но я бы предпочел удалить ошибку: неучтенная ошибка типа: varposlist не определен

Это мой js-код:

 $(function(){ var pane = $('.scroll-pane'); pane.jScrollPane({  }); var api = pane.data('jsp');   if(typeof localStorage!='undefined') {  //Get var from local storage  var menu = sessionStorage.getItem("menu");  var yposistock_rule = sessionStorage.getItem("yposistock_rule");     //Check menu view mode  if(menu == "arbo") {  // defined top from a#on anchor  var varposchapter = $('a#on_menuchapter').offset();  //add - 285 to put at same level than title  var vartop1 = varposchapter.top -285 -yposistock_rule;  if(scrollauto_rule == "oui") {  sessionStorage.removeItem("yposistock_rule");  };  api.scrollTo(0, vartop1);  return false;    }  else{   // defined top from a#on anchor  var varposlist = $('a#on_menulist').offset();  //add - 285 to put at same level than title  var vartop2 = varposlist.top -285 -yposistock_rule;  if(scrollauto_rule == "oui") {  sessionStorage.removeItem("yposistock_rule");  };  api.scrollTo(0, vartop2);  return false;  }  } });  

Есть идеи ? Большое спасибо.

Ответ №1:

Единственное, о чем я могу думать, это эта строчка:

 $('a#on_menulist').offset();  

# Выбирается элемент с тем же идентификатором. Если у вас нет элемента с идентификатором=on_menulist, этот код не может найти идентификатор, который затем не может найти смещение.

Комментарии:

1. Хорошо, мой плохой, эта ошибка произошла только на домашней странице, где идентификатор не определен. Спасибо за этот очевидный ответ 😉 У вас есть какие-нибудь идеи, как я мог бы сделать сценарий условным, чтобы избежать ошибки ?

2. Исправлено путем добавления условия ‘if ( $(‘#on_menulist). длина ) { // существует } еще { // не существует }’