2015-05-21 3 views
-1

Функция js/jquery не работает должным образом, а вместо INT возвращает undefined.Функция Javascript возвращает undefined вместо int

function __getLastSelectedCategory(table_id) { 
    if (jQuery('.categories_table[data-table-id="1"]').find('td.active').length > 0){ 
     console.log('check1'); 
     if (table_id != '0') { 
      console.log('check2'); 
      var checkTableId = parseInt(table_id) - 1; 
      var table = jQuery('.cl_categories_display ').find('table[data-table-id="' + checkTableId + '"]'); 

      if (table.find('td.active').length > 0) { 
       console.log('check3'); 
       console.log('table id: ' + table.find('td.active').data('category-id')); 
       return table.find('td.active').data('category-id'); 
      } else { 
       console.log('check4'); 
       __getLastSelectedCategory(checkTableId); 
      } 
     } else { 
      console.log('check5'); 
      var lastTable = jQuery('.cl_categories_display ').find('table:last'); 
      var lastTableId = lastTable.data('table-id'); 

      if (lastTable.find('td.active').length > 0) { 
       console.log('check6'); 
       return lastTable.find('td.active').data('category-id'); 
      } else { 
       console.log('check7'); 
       __getLastSelectedCategory(lastTableId); 
      } 
     } 
    } else { 
     console.log('check8'); 
     return null; 
    } 
} 

когда я запускаю эту функцию я вижу в консоли:

  • проверки 1
  • чек 5
  • чек 7
  • проверка 1
  • проверка 2
  • проверка 3
  • стол ID: 1
  • последняя кошка не определено

поэтому рекурсия отлично работает, но вместо целого (консольный печататься «таблицы ID: 1») ИК возвращает неопределенное значение. Что может быть неправильным?

+1

Вы не возвращаете результаты рекурсивных вызовов. – Pointy

+0

так где проблема? потому что вы просто набрали это, и нет никакой информации, что вы имеете в виду. –

+0

'return __getLastSelectedCategory (lastTableId);' – Pointy

ответ

2

Вы забыли return от вызова recurse: он возвратил значение от внутренней функции к внешнему, но не возвратил его из внешней функции вызывающему. Попробуйте следующее:

function __getLastSelectedCategory(table_id) { 
     if (jQuery('.categories_table[data-table-id="1"]').find('td.active').length > 0){ 
     console.log('check1'); 
     if (table_id != '0') { 
      console.log('check2'); 
      var checkTableId = parseInt(table_id) - 1; 
      var table = jQuery('.cl_categories_display ').find('table[data-table-id="' + checkTableId + '"]'); 

      if (table.find('td.active').length > 0) { 
      console.log('check3'); 
      console.log('table id: ' + table.find('td.active').data('category-id')); 
      return table.find('td.active').data('category-id'); 
      } else { 
      console.log('check4'); 
      return __getLastSelectedCategory(checkTableId); 
      } 
     } else { 
      console.log('check5'); 
      var lastTable = jQuery('.cl_categories_display ').find('table:last'); 
      var lastTableId = lastTable.data('table-id'); 

      if (lastTable.find('td.active').length > 0) { 
      console.log('check6'); 
      return lastTable.find('td.active').data('category-id'); 
      } else { 
      console.log('check7'); 
      return __getLastSelectedCategory(lastTableId); 
      } 
     } 
     } else { 
     console.log('check8'); 
     return null; 
     } 
    } 
+0

спасибо. Я просто не понял, где проблема, и пальцы, указывающие на неправильную линию, очень помогли мне. –

Смежные вопросы