简体   繁体   English

Javascript函数返回undefined而不是int

[英]Javascript function returns undefined instead of int

My js/jquery function does not work properly and instead of INT returns undefined. 我的js / jquery函数无法正常运行,而不是INT返回undefined。

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;
    }
}

when I run this function I see in console: 当我运行此功能时,我会在控制台中看到:

  • check 1 检查1
  • check 5 检查5
  • check 7 检查7
  • check 1 检查1
  • check 2 检查2
  • check 3 检查3
  • table id: 1 表格ID:1
  • last cat: undefined 最后一只猫:未定义

so the recursion works fine, but instead of integer (console printed "table id: 1") ir returns undefined. 因此,递归工作正常,但是ir返回undefined而不是整数(控制台打印的“表ID:1”)。 What could be wrong? 有什么事吗

You forgot return from recurse call: It returned value from the inner function to the outer, but did not return it from outer function to the caller. 你忘了return从递归调用:它从内部功能外返回的值,但并没有从外部函数返回它给调用者。 Try this: 尝试这个:

    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;
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM