javascript作用域問題實例分析
最近做項目過程中需要根據(jù)JSON數(shù)據(jù)生成一個樹狀的目錄,結(jié)果代碼如下:
var folderList=[ { "FolderName": "ASD", "ChildList": null }, { "FolderName": "內(nèi)網(wǎng)公告", "ChildList": null }, { "FolderName": "測試文檔", "ChildList": null }, { "FolderName": "軟件開發(fā)", "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; } }
結(jié)果出來的樹如下圖:
經(jīng)排查,發(fā)現(xiàn)是由于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 ''; } }
修改之后,可實現(xiàn)想的效果:
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
純JavaScript 實現(xiàn)flappy bird小游戲?qū)嵗a
這篇文章主要介紹了純JavaScript 實現(xiàn)flappy bird小游戲?qū)嵗a,b本文分七大步驟給大家介紹,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09利用CSS、JavaScript及Ajax實現(xiàn)圖片預(yù)加載的三大方法
本文主要介紹了利用CSS、JavaScript及Ajax實現(xiàn)圖片預(yù)加載的三大方法。具有很好的參考價值,下面跟著小編一起來看下吧2017-01-01javascript基礎(chǔ)知識之html5輪播圖實例講解(44)
這篇文章主要為大家詳細介紹了javascript基礎(chǔ)知識之html5輪播圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02TypeScript對于Duck類型和模塊命名空間應(yīng)用
這篇文章主要介紹了TypeScript對于Duck類型和模塊命名空間應(yīng)用,Duck類型是一種動態(tài)類型和多態(tài)形式,在duck類型中,重點是對象的行為可以做什么,而不是對象所屬的類型2022-08-08