• 作用域问题引发的血案


    最近做项目过程中需要根据JSON数据生成一个树状的目录,结果代码如下:

    var folderList=[
        {
            "FolderName": "ASD",
            "ChildList": null
        },
        {
            "FolderName": "内网公告",
            "ChildList": null
        },
        {
            "FolderName": "测试文档",
            "ChildList": null
        },
        {
            "FolderName": "软件开发",
            "ChildList": null
        },
        {
            "FolderName": "Test",
            "ChildList": [
                {
                    "FolderName": "Test2",
                    "ChildList": [
                        {
                            "FolderName": "Test3",
                            "ChildList": null
                        }
                    ]
                }
            ]
        },
        {
            "FolderName": "个人",
            "ChildList": null
        },
        {
            "FolderName": "公司通知",
            "ChildList": null
        },
        {
            "FolderName": "采购平台",
            "ChildList": null
        }
    ];
                var str='';
                function generateFolders(arr) {
                    if (arr.length > 0) {
                        str += '<div class="sui-list sui-list-icon ubt bc-gra1">';
                        for (var i = 0, len = arr.length; i < len; i++) {
                            str += '<ul class="ub ub-ac">' 
                                    + '<li class="sui-list-licon sui-icon-ok-circle fts2">' + '</li>' 
                                    + '<ul class="ub ub-f1 sui-list-item">' 
                                      + '<li class="ub-f1 sui-list-text sui-list-nowrap">' + arr[i].FolderName + '</li>' 
                                      + '<li class="sui-list-ricon ub-img sui-icon-chevron-right fts2"></li>' 
                                    + '</ul>' 
                                 + '</ul>';
                            if (isDefine(arr[i].ChildList)) {
                                str += generateFolders(arr[i].ChildList);
                            }
                        }
                        str += '</div>';
                        return str;
                    }else{
                        return '';
                    }
                }

                var folderTxt ='<div class="sui-list sui-list-icon ubt bc-gra1">' 
                                      +'<ul class="ub ub-ac">' 
                                          +'<li class="sui-list-licon sui-icon-drawer fts2">' + '</li>' 
                                          +'<ul class="ub ub-f1 sui-list-item">' 
                                              +'<li class="ub-f1 sui-list-text sui-list-nowrap">我的目录</li>' 
                                              +'<li class="sui-list-ricon ub-img sui-icon-chevron-right fts2"></li>' 
                                          +'</ul>' 
                                      +'</ul>';
                folderTxt+=generateFolders(folderList);
                folderTxt += '</div>';
                $('#list').html(folderTxt);
                /**
                 * 判断是否是空
                 * @param value
                 */
                function isDefine(value){
                    if(value == null || value == "" || value == "undefined" || value == undefined || value == "null" || value == "(null)" || value == 'NULL' || typeof(value) == 'undefined'){
                        return false;
                    }
                    else{
                  value = value+"";
                        value = value.replace(/s/g,"");
                        if(value == ""){
                            return false;
                        }
                        return true;
                    }
                }

    结果出来的树如下图:

    经排查,发现是由于str定义的位置不对引起的,将str定义为局部变量就可以了。

    function generateFolders(arr) {
                    var str='';
                    if (arr.length > 0) {
                        str += '<div class="sui-list sui-list-icon ubt bc-gra1">';
                        for (var i = 0, len = arr.length; i < len; i++) {
                            str += '<ul class="ub ub-ac">' 
                                    + '<li class="sui-list-licon sui-icon-ok-circle fts2"></li>' 
                                    + '<ul class="ub ub-f1 sui-list-item">' 
                                        + '<li class="ub-f1 sui-list-text sui-list-nowrap">' + arr[i].FolderName + '</li>' 
                                        + '<li class="sui-list-ricon ub-img sui-icon-chevron-right fts2"></li>' 
                                    + '</ul>' 
                                + '</ul>';
                            if (isDefine(arr[i].ChildList)) {
                                str += generateFolders(arr[i].ChildList);
                            }
                        }
                        str += '</div>';
                        return str;
                    }else{
                        return '';
                    }
                }

    修改之后,可实现想的效果:

  • 相关阅读:
    20200116
    20200115
    20191214数组之四:数字不相同的完全平方数(关于数位上数字判断与sprintf)
    结构体与C++sort()函数的用法
    字符串常用函数
    sscanf用法
    螺旋矩阵
    模m的k次根
    梅森素数与完全数
    bit_reverse_swap
  • 原文地址:https://www.cnblogs.com/dzlishen/p/4556128.html
Copyright © 2020-2023  润新知