BTree.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. Namespace.register("U.MD.UI.BTree");
  2. //json要求:
  3. //里面需要包含id,name,deep(依赖),img_url(显示图片源),child(附属目录),为一个数值,每一个值为一个json,child的格式也是一样
  4. //案例
  5. // [{ id: "1", name: "文件夹", deep: 0, img_url: 'http://api.1473.cn/Uform/Image/tree/folder.png',
  6. //child: [{ id: "2", name: "文件夹", deep: 1, img_url: "http://api.1473.cn/Uform/Image/tree/folder.png",
  7. // child: [{ id: "5", name: "文件夹", deep: 2, img_url: "http://api.1473.cn/Uform/Image/tree/folder.png"}]
  8. // },
  9. //{ id: "3", name: "文件夹", deep: 1, img_url: "http://api.1473.cn/Uform/Image/tree/folder.png" },
  10. //{ id: "4", name: "文件夹", deep: 1, img_url: "http://api.1473.cn/Uform/Image/tree/folder.png"}]
  11. //}]
  12. //var json = [{ id: "1", name: "文件夹", deep: 0, img_url: 'http://api.1473.cn/Uform/Image/tree/folder.png',
  13. // child: [{ id: "2", name: "文件夹", deep: 1, img_url: "http://api.1473.cn/Uform/Image/tree/folder.png",
  14. // child: [{ id: "5", name: "文件夹", deep: 2, img_url: "http://api.1473.cn/Uform/Image/tree/folder.png"}]
  15. // },
  16. // { id: "3", name: "文件夹", deep: 1, img_url: "http://api.1473.cn/Uform/Image/tree/folder.png" },
  17. //{ id: "4", name: "文件夹", deep: 1, img_url: "http://api.1473.cn/Uform/Image/tree/folder.png"}]
  18. //},{ id: "6", name: "文件夹", deep: 0, img_url: 'http://api.1473.cn/Uform/Image/tree/folder.png', child: [{ id: "8", name: "文件夹", deep: 6, img_url: "http://api.1473.cn/Uform/Image/tree/folder.png",
  19. // child: [{ id: "9", name: "文件夹", deep: 8, img_url: "http://api.1473.cn/Uform/Image/tree/folder.png"}]
  20. // },
  21. // { id: "10", name: "文件夹", deep: 6, img_url: "http://api.1473.cn/Uform/Image/tree/folder.png" },
  22. //{ id: "11", name: "文件夹", deep: 6, img_url: "http://api.1473.cn/Uform/Image/tree/folder.png"}]},{ id: "7", name: "文件夹", deep: 0, img_url: 'http://api.1473.cn/Uform/Image/tree/folder.png',}];
  23. /*
  24. 开始方法一,用来生成树和后台管理页面
  25. arr {arr} 要解析的json arr对象
  26. bookfun {function} 点击事件
  27. dateDeleteFun {function} date的删除方法
  28. dateUpdateFun {function} date的修改方法
  29. dateInsertFun {function} date的添加方法
  30. tree {object} 右侧要插入后台li的地方
  31. directory {object} 要插入后台li的地方
  32. list {object} 左侧放添加标签的的地方
  33. listimg {String} 后台页面的img
  34. deteimg {String} 是否启用删除标签的图片
  35. upimg {String} 是否启用修改标签的图片
  36. */
  37. U.MD.UI.BTree = function (arr, bookfun, dateDeleteFun, dateUpdateFun, dateInsertFun, tree, directory, list, listimg, deteimg, upimg) {
  38. U.MD.UI.BTree.jsonStartLeft(arr, tree[0], bookfun); //调用方法,生成树状图
  39. U.MD.UI.BTree.jsonStartRight(tree[1], bookfun, dateDeleteFun, dateUpdateFun, dateInsertFun, directory, list, listimg, deteimg, upimg); //调用方法,生成管理页面
  40. }
  41. /*
  42. 将二维数组转化为列表的方法
  43. json {arr} 数据源json里面需要包含id,name,deep(依赖),img_url(显示图片源),child(附属目录),外部是数组
  44. tree {object} 要插入列表的地方
  45. bookfun {function} 没一行的点击事件
  46. */
  47. U.MD.UI.BTree.treeCreate = function (json, tree, onclickfun) {
  48. for (var _i = 0; _i < json.length; _i++) { //创建循环,解析json数组,得到每一个json
  49. var _ul = $$("ul", { className: "U_MD_UI_Tree_a " + json[_i].parentID }, tree); //创建var对象,在tree中创建ul
  50. var _li = $$("li", { id: json[_i].id, parentid: json[_i].parentid, className: "U_MD_UI_Tree_listyle", parentid: json[_i].id, deep: json[_i].deep }, _ul); //创建var对象,在ul中创建li,id为a+jsonid
  51. var _img = $$("img", { "onerror": U.MD.C.imgError, src: json[_i].img_url, className: "U_MD_UI_Tree_imgstyle" }, _li); //创建var对象,在li中创建img
  52. var _span = $$("span", { innerHTML: json[_i].name, className: "spanstyle" }, _li); //创建var对象,在li中创建span,内容为json的name
  53. _ul.style.display = "none";
  54. if (json[_i].deep == "1") { _ul.style.display = "block" } //进行判断,判断是否为一级目录,不是的先隐藏
  55. _img.aa = false; //定义img的一个变量,用来控制列表的展开和关闭
  56. var _liobj = document.getElementsByClassName("U_MD_UI_Tree_a " + json[_i].parentID)[0]; //定义一个let对象为获取到的对应的li对象
  57. _ul.style.display = _liobj.style.display; //如果是展开状态,显示ul
  58. _li.onclick = function () {//定义li的点击事件
  59. onclickfun(this); //执行bookconlick函数,改变book对象的内容
  60. _liobj = document.getElementsByClassName("U_MD_UI_Tree_a " + this.parentid);
  61. if (_img.aa === true) { //如果img.aa等于true
  62. _img.aa = false; //修改img.aa对象为false
  63. for (var _ii = 0; _ii < _liobj.length; _ii++) { //定义循环,循环对象为获取到的li对象集合
  64. _liobj[_ii].style.display = "none"; //将集合隐藏
  65. }
  66. } else { //如果img.aa等于false
  67. _img.aa = true; //修改img.aa等于true
  68. for (var _ii = 0; _ii < _liobj.length; _ii++) { //定义循环,循环对象为获取到的li对象集合
  69. _liobj[_ii].style.display = "block"; //将集合显示
  70. }
  71. }
  72. }
  73. if (json[_i].child) {
  74. U.MD.UI.BTree.treeCreate(json[_i].child, _ul, onclickfun); //重新调用函数,参数为child的对象数组,ul对象,20的边距值,隐藏,改变的book对象
  75. }
  76. }
  77. }
  78. /*
  79. 在json中查找指定id下的child
  80. json {arr} 要查找的arr对象
  81. parentID {String} 要查找的id
  82. */
  83. U.MD.UI.BTree.JsonSelect = function (json, parentID) {
  84. var _json = []; //创建一个变量_json,来接收筛选后的json
  85. for (var _i = 0; _i < json.length; _i++) {//创建循环,循环对象为json
  86. if (parentID == 0) { //判断parentID是否为0,如果是
  87. return json; //返回json
  88. } //如果不是
  89. if (json[_i].id == parentID) {//判断json中各个对象的id是否与parentID相等,如果是
  90. _json = json[_i].child; //变量_json等于json中对应对象的child值
  91. return _json; //返回变量_json
  92. } //如果不是
  93. if (json[_i].child) { //判断json中对象是否有child值,如果有
  94. var _return = U.MD.UI.BTree.JsonSelect(json[_i].child, parentID); //定义变量_return 值为调用方法本身的返回值
  95. }
  96. }
  97. return _return; //返回_return
  98. }
  99. /*
  100. 创建查询管理目录的方法
  101. json {arr} 要解析的json arr对象
  102. tree {object} 左侧要插入后台li的地方
  103. list {object} 左侧放添加标签的的地方
  104. jsonpid {String} 添加标签的深度
  105. jsondelete {function} json的删除方法
  106. jsonupdate {function} json的修改方法
  107. jsonadd {function} json的添加方法
  108. deteurl {String} 是否启用删除标签的图片
  109. upurl {String} 是否启用修改标签的图片
  110. i {String} tree的对象值,控制下一级
  111. j {String} tree的对象值,控制上一级
  112. */
  113. U.MD.UI.BTree.DirectoryCreate = function (json, tree, list, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, i, j) {
  114. if (i == 0) { //判断是否载入第一层,如果是
  115. list[1].style.display = "none"; //隐藏二级目录
  116. list[2].style.display = "none"; //隐藏三级目录
  117. } else { //如果不是载入第一层目录
  118. list[2].style.display = "none"; //将三级目录隐藏
  119. list[i].style.display = "block"; //显示对应级目录
  120. }
  121. var _buttonText = "修改"; //定义变量_buttonText,代表修改按钮的默认值
  122. var _button1Text = "删除"; //定义变量_button1Text,代表删除按钮的默认值
  123. if (deteurl && upurl) { //进行判断,是否提供默认按钮,如果不是
  124. _buttonText = ""; //消除_buttonText
  125. _button1Text = ""; //消除_button1Text
  126. }
  127. tree[i].innerHTML = ""; //将tree中的内容清空
  128. list[i].parentID = jsonpid; //给list定义一个变量
  129. list[i].deep = i + 1; //给list定义深度变量
  130. if (j) { //判断是否有输入上一级
  131. tree[j].innerHTML = ""; //如果有,清空上一级
  132. }
  133. if (json) { //如果json存在
  134. for (var _i = 0; _i < json.length; _i++) { //创建循环,循环对象为json
  135. var _ul = $$("ul", { className: "U_MD_UI_Tree_styleul", parentid: json[_i].parentID, deep: json[_i].deep }, tree[i]); //创建在tree中创建ul
  136. var _li = $$("li", { className: "U_MD_UI_Tree_styleli", innerHTML: json[_i].name, parentid: json[_i].id }, _ul); //创建li在tree的下一级中,css为styleli
  137. var _button = $$("input", { type: "button", pid: json[_i].id, parentid: json[_i].parentID, innerHTML: _buttonText, className: "U_MD_UI_Tree_button" }, _ul); //创建修改button在在li中,css为stylebutton
  138. var _button1 = $$("input", { type: "button", pid: json[_i].id, parentid: json[_i].parentID, innerHTML: _button1Text, className: "U_MD_UI_Tree_button1" }, _ul); //创建删除button在在li中,css为stylebutton
  139. //创建删除button在在li中,css为stylebutton
  140. _button.onclick = function () { //给修改按钮定义onclick事件
  141. jsonupdate(this, tree, list, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, i); //事件为调用jsonupdate方法,输入this为变量
  142. }
  143. _button1.onclick = function () { //给删除按钮定义oncick事件
  144. jsondelete(this, tree, list, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, i); //事件为调用jsondelete方法,输入this为变量
  145. }
  146. _li.onclick = function () { //给li定义onclick事件
  147. if (j) { //判断j是否存在,如果存在
  148. U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, this.parentid), tree, list, this.parentid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, j); //调用方法,创建下一级的下一级目录
  149. } else { //如果不存在
  150. if (i == 2) { //判断是否到三级目录
  151. } else { //如果还没到
  152. U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, this.parentid), tree, list, this.parentid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 1, 2); //调用方法,创建下一级的下一级目录
  153. }
  154. }
  155. }
  156. }
  157. }
  158. var add = U.selectEl(".U_MD_UI_Tree_add");
  159. if (add[i]) { //进行判断,当添加标签已存在时
  160. list[i].removeChild(add[i]); //销毁添加标签
  161. }
  162. var _div = $$("div", { className: "U_MD_UI_Tree_add", innerHTML: "添加新分类" }, list[i]); //创建添加标签
  163. _div.onclick = function () { //设置添加标签的点击事件
  164. jsonadd(this, tree, list, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, i); //调用添加方法,进行添加
  165. }
  166. }
  167. /*
  168. 在json中插入json的方法
  169. json {arr} 要被插入的json对象
  170. addjson {json} 要查入的json对象
  171. */
  172. U.MD.UI.BTree.jsonAdd = function (json, addjson) {
  173. var _addid = addjson.parentID; //定义要目的地id,等于插入json的parentID值
  174. if (_addid == "0") { //进行判断,判断目的地id是否在第一层(0)
  175. json[json.length] = addjson; //如果在,直接在json的第一层中加入要插入的json
  176. return json; //结束方法,返回json对象
  177. }
  178. for (var _i = 0; _i < json.length; _i++) { //创建循环,解析json数组,得到每一个json
  179. if (json[_i].id == _addid) { //进行判断,判断json的id是否等于获取到的目的地id,如果是
  180. if (json[_i].child) { //进行判断,判断json的child有没有值
  181. json[_i].child[json[_i].child.length] = addjson; //如果有,就在其中添加插入对象
  182. return json; //结束方法,返回json对象
  183. } else {//如果json中没有child
  184. json[_i].child = [];
  185. json[_i].child[json[_i].child.length] = addjson; //将json的child等于插入的对象
  186. return json; //结束方法,返回json对象
  187. }
  188. }
  189. if (json[_i].child) { //如果json的id不与目的地id相等且json中存在child
  190. var _return = U.MD.UI.BTree.jsonAdd(json[_i].child, addjson); //定义函数,调用自己,变量为json的child,要插入的json
  191. json[_i].child = _return; //json的child等于返回的json
  192. }
  193. }
  194. return json; //返回json对象
  195. }
  196. /*
  197. 开始方法二,生成后台管理页面
  198. arr {arr} 要解析的json arr对象
  199. bookfun {function} 点击事件
  200. jsonDeleteFun {function} json的删除方法
  201. jsonUpdateFun {function} json的修改方法
  202. jsonInsertFun {function} json的添加方法
  203. tree {object} 右侧要插入后台li的地方
  204. directory {object} 要插入后台li的地方
  205. mulu {object} 左侧放添加标签的的地方
  206. muluimg {String} 后台页面的img
  207. deteimg {String} 是否启用删除标签的图片
  208. upimg {String} 是否启用修改标签的图片
  209. */
  210. U.MD.UI.BTree.jsonStartA = function (arr, bookfun, jsonDeleteFun, jsonUpdateFun, jsonInsertFun, tree, directory, mulu, muluimg, deteimg, upimg) {
  211. json = []; //将外变量josn清空
  212. var _json = arr; //定义局部变量_json,值为r
  213. for (var _i = 0; _i < _json.length; _i++) { //定义循环,循环对象为
  214. U.MD.UI.BTree.jsonAdd(json, _json[_i]); //运行函数,生成json
  215. }
  216. tree.innerHTML = ""; //清空tree的内容
  217. U.MD.UI.BTree.jsonStartRight(tree, bookfun, jsonDeleteFun, jsonUpdateFun, jsonInsertFun, directory, mulu, muluimg, deteimg, upimg); //调用方法,生成管理页面
  218. }
  219. /*
  220. 生成后台管理页面及管理页面li
  221. tree {object} 右侧要插入后台li的地方
  222. bookfun {function} 点击事件
  223. jsonDeleteFun {function} json的删除方法
  224. jsonUpdateFun {function} json的修改方法
  225. jsonInsertFun {function} json的添加方法
  226. directory {object} 要插入后台li的地方
  227. mulu {object} 左侧放添加标签的的地方
  228. muluimg {String} 后台页面的img
  229. deteimg {String} 是否启用删除标签的图片
  230. upimg {String} 是否启用修改标签的图片
  231. */
  232. U.MD.UI.BTree.jsonStartRight = function (tree, bookfun, jsonDeleteFun, jsonUpdateFun, jsonInsertFun, directory, mulu, muluimg, deteimg, upimg) {
  233. var _ul = $$("ul", { className: "U_MD_UI_Tree_a " }, tree); //创建对象,在tree中创建ul
  234. var _li = $$("li", { className: "U_MD_UI_Tree_listyle", yid: "1" }, _ul); //创建对象,在ul中创建li,id为a+jsonid
  235. var _img = $$("img", { "onerror": U.MD.C.imgError, src: muluimg, className: "U_MD_UI_Tree_imgstyle" }, _li); //创建对象,在li中创建img
  236. var _span = $$("span", { innerHTML: "目录管理", className: "U_MD_UI_Tree_spanstyle" }, _li); //创建对象 在li中创建span
  237. _li.onclick = function () { //设置li的点击事件
  238. bookfun(this); //先执行点击事件
  239. U.MD.UI.BTree.DirectoryCreate(json, directory, mulu, 0, //运行方法,生成后台页面
  240. function (objects, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, i) {
  241. var _ret = jsonDeleteFun(objects.pid); //运行删除方法
  242. if (_ret) {//如果返回了方法
  243. json = U.MD.UI.BTree.jsonDelete(json, objects.pid); //运行方法,修改json
  244. var _id = U.selectEl("#" + objects.pid)[0]; //获取修改对象
  245. if (_id) { _id.parentNode.remove(); } //如果有对象,修删除
  246. if (i == 1) {
  247. U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, objects.parentid), tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 1, 2);
  248. } //刷新二级页面
  249. if (i == 2) {
  250. U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, objects.parentid), tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 2);
  251. } //刷新三级页面
  252. if (i == 0) {
  253. U.MD.UI.BTree.DirectoryCreate(json, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 0);
  254. } //修改一级页面
  255. }
  256. },
  257. function (objects, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, i) {
  258. var _ret = jsonUpdateFun(U.MD.UI.BTree.jsonSelectA(json, objects.pid)); //运行修改方法
  259. json = U.MD.UI.BTree.jsonUpdate(json, _ret); //运行方法,修改json
  260. var _id = U.selectEl("#" + objects.pid)[0]; //获取修改对象
  261. if (_id) {
  262. _id.childNodes[0].src = _ret.img_url; //修改对象
  263. _id.childNodes[1].innerHTML = _ret.name; //修改对象
  264. }
  265. if (i == 1) {
  266. U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, objects.parentid), tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 1, 2);
  267. } //刷新二级页面
  268. if (i == 2) {
  269. U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, objects.parentid), tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 2);
  270. } //刷新三级页面
  271. if (i == 0) {
  272. U.MD.UI.BTree.DirectoryCreate(json, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 0);
  273. } //修改一级页面
  274. },
  275. function (objects, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, i) {
  276. var _json = {}; //定义变量
  277. _json.parentID = objects.parentNode.parentID; //获取添加的parentid
  278. _json.deep = objects.parentNode.deep; //获取添加的deep
  279. var _ret = jsonInsertFun(_json); //运行添加方法
  280. var _post; //定义局部对象
  281. if (_ret) {//如果有返回值
  282. _post = U.selectEl(".U_MD_UI_Tree_a")[1];
  283. if (_post) {//判断前台树是否存在
  284. if (_ret.parentID == 0) {//如果要插入的是一级目录
  285. _post = U.selectEl(".U_MD_UI_Tree_a")[0].parentNode; //获取一级对象
  286. } else {
  287. _post = U.selectEl("#" + _ret.parentID)[0].parentNode; //获取对应对象
  288. }
  289. _js = []; //定义局部对象
  290. _js[0] = _ret; //给对象定值
  291. U.MD.UI.BTree.treeCreate(_js, _post, bookfun); //创建li
  292. }
  293. json = U.MD.UI.BTree.jsonAdd(json, _ret); //刷新json
  294. if (i == 1) {
  295. U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, _json.parentID), tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 1, 2);
  296. } //刷新二级页面
  297. if (i == 2) {
  298. U.MD.UI.BTree.DirectoryCreate(U.MD.UI.BTree.JsonSelect(json, _json.parentID), tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 2);
  299. } //刷新三级页面
  300. if (i == 0) {
  301. U.MD.UI.BTree.DirectoryCreate(json, tree, mulu, jsonpid, jsondelete, jsonupdate, jsonadd, deteurl, upurl, 0);
  302. } //修改一级页面
  303. }
  304. }, deteimg, upimg, 0); //调用方法,生成一级目录
  305. }
  306. }
  307. /*
  308. 生成左边树状图的方法
  309. arr {arr} 要处理的arrjson对象
  310. tree {object} 要插入树状图的地方
  311. bookfun {function} 点击事件
  312. */
  313. U.MD.UI.BTree.jsonStartLeft = function (arr, tree, bookfun) {
  314. json = []; //将外变量josn清空
  315. var _json = arr; //定义局部变量_json,值为r
  316. for (var _i = 0; _i < _json.length; _i++) { //定义循环,循环对象为
  317. U.MD.UI.BTree.jsonAdd(json, _json[_i]); //运行函数,生成json
  318. }
  319. tree.innerHTML = ""; //清空tree的内容
  320. U.MD.UI.BTree.treeCreate(json, tree, bookfun); //运行方法,在tree中生成树状图
  321. }
  322. /*
  323. json的删除方法
  324. json {arr} 要处理的arrjson对象
  325. pid {String} 要删除的id
  326. */
  327. U.MD.UI.BTree.jsonDelete = function (json, pid) {
  328. for (var _i = 0; _i < json.length; _i++) {//定义循环,循环对象为json
  329. if (json[_i].id == pid) {//进行判断,判断json[_i]是否为目标pid
  330. json.splice(_i, 1); //删除
  331. return json; //返回json
  332. } else {
  333. if (json[_i].child) {//如果有child
  334. json[_i].child = U.MD.UI.BTree.jsonDelete(json[_i].child, pid); //重复调用方法
  335. }
  336. }
  337. }
  338. return json; //返回json
  339. }
  340. /*
  341. json的搜索方法
  342. json {arr} 要处理的arrjson对象
  343. id {String} 要删除的id
  344. */
  345. U.MD.UI.BTree.jsonSelectA = function (json, id) {
  346. for (var _i = 0; _i < json.length; _i++) {//定义循环,循环对象为json
  347. if (json[_i].id == id) {//进行判断,判断json[_i]是否为目标pid
  348. return json[_i]; //返回目标
  349. }
  350. if (json[_i].child) {//如果有child
  351. var _return = U.MD.UI.BTree.jsonSelectA(json[_i].child, id); //重复调用方法
  352. if (_return) {//当返回有值
  353. return _return; //返回结果
  354. }
  355. }
  356. }
  357. return false;
  358. }
  359. /*
  360. json的修改方法
  361. json {arr} 要处理的arrjson对象
  362. upjson {json}要插入的json
  363. */
  364. U.MD.UI.BTree.jsonUpdate = function (json, upjson) {
  365. for (var _i = 0; _i < json.length; _i++) {//定义循环,循环对象为json
  366. if (json[_i].id == upjson.id) {//进行判断,判断json[_i]是否为目标pid
  367. json[_i] = upjson; //进行替换
  368. return json; //返回json
  369. }
  370. if (json[_i].child) {//如果有child
  371. var _return = U.MD.UI.BTree.jsonUpdate(json[_i].child, upjson); //重复调用方法
  372. if (_return) {//当返回有值
  373. json[_i].child = _return;
  374. return json; //返回结果
  375. }
  376. }
  377. }
  378. return false;
  379. }
  380. /*
  381. 搜索arr中最高的id方法
  382. arr {arr} 要搜索的arr对象
  383. */
  384. U.MD.UI.BTree.createID = function (arr) {
  385. var _return = 0; //定义变量
  386. for (var _i = 0; _i < arr.length; _i++) {//定义循环,循环对象为arr
  387. if (parseInt(arr[_i].id) > _return) {//进行判断,如果arr的id比_return大
  388. _return = parseInt(arr[_i].id); //修改_return的值
  389. }
  390. }
  391. return _return; //返回变量
  392. }