<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Title</title> <script src="jquery-2.1.4.min.js"></script></head><body><div id="div_menu"></div><script> var menulist = { "menulist": [ { "MID": "M001", "MName": "首页", "Url": "#", "menulist": "" }, { "MID": "M002", "MName": "车辆买卖", "Url": "#", "menulist": [ { "MID": "M003", "MName": "新车", "Url": "#", "menulist":""}, { "MID": "M004", "MName": "二手车", "Url": "#", "menulist": "" }, { "MID": "M005", "MName": "改装车", "Url": "#", "menulist": "" } ] }, { "MID": "M006", "MName": "宠物", "Url": "#", "menulist": "" } ] }; <!--js Code--> $(function () { var showlist = $("<ul></ul>"); showall(menulist.menulist, showlist); $("#div_menu").append(showlist); });var color="#ddd"; //menu_list为json数据 //parent为要组合成html的容器 function showall(menu_list, parent) { for (var i in menu_list) { //如果有子节点,则遍历该子节点 if (menu_list[i].menulist.length > 0) { //创建一个子节点li var li = $("<li></li>"); //将li的文本设置好,并马上添加一个空白的ul子节点,并且将这个li添加到父亲节点中 $(li).append(menu_list[i].MName).append("<ul></ul>").appendTo(parent); //将空白的ul作为下一个递归遍历的父亲节点传入 showall(menu_list[i].menulist, $(li).children().eq(0)); } //如果该节点没有子节点,则直接将该节点li以及文本创建好直接添加到父亲节点中 else { $("<li></li>").append(menu_list[i].MName).appendTo(parent); } } }</script></body></html>
1 回答
习惯受伤
TA贡献885条经验 获得超1144个赞
先上图:
你说的是这种效果吗?
CODE:
var color="#fff"; //获取一个当前颜色的浅一个色的颜色 var getLighterColor= function(c){ var colorString = c.replace(/#/,'');//删除颜色种的# var colorAscii = []; for(var _c in colorString){ var ascii = colorString[_c].charCodeAt() - 1;//这里递减计算 if(ascii > 57 && ascii <= 97){ //如果色值小于 'a' 那么颜色值就从'9'开始, ascii = 57 - (97-ascii); } else if(ascii < 48){ //如果色值小于0,从'f'开始 ascii = 102 - (48-ascii); } colorAscii.push(ascii); } colorString = []; //将每一个 ascii 码,转化成字符重新拼接 for(var a in colorAscii){ colorString.push(String.fromCharCode(colorAscii[a])); } //还原色值 colorString = "#"+colorString.join(''); console.log(c + "==>" + colorString); return colorString; } //menu_list为json数据 //parent为要组合成html的容器 function showall(menu_list, parent) { for (var i in menu_list) { color = getLighterColor(color); //如果有子节点,则遍历该子节点 if (menu_list[i].menulist.length > 0) { //创建一个子节点li var li = $("<li></li>"); //将li的文本设置好,并马上添加一个空白的ul子节点,并且将这个li添加到父亲节点中 $(li).append(menu_list[i].MName).append("<ul></ul>").css({"background-color":color}).appendTo(parent); //将空白的ul作为下一个递归遍历的父亲节点传入 showall(menu_list[i].menulist, $(li).children().eq(0)); } //如果该节点没有子节点,则直接将该节点li以及文本创建好直接添加到父亲节点中 else { $("<li></li>").append(menu_list[i].MName).css({"background-color":color}).appendTo(parent); } } }
另外看控制台测试结果:
添加回答
举报
0/150
提交
取消