var cate = {"cate":[{"id":"1","name":"景点景区","parent":"1"},{"id":"2","name":"星级饭店","parent":"2"},{"id":"3","name":"旅行社","parent":"3"},{"id":"4","name":"重点区域","parent":"4"},{"id":"5","name":"某景点","parent":"1"},{"id":"6","name":"慕田峪长城","parent":"1"},{"id":"7","name":"1星级饭店","parent":"2"},{"id":"8","name":"2星级饭店","parent":"2"},{"id":"9","name":"1星级饭店子类","parent":"7"},{"id":"10","name":"重点区域子类","parent":"4"},{"id":"11","name":"1星级饭店子类2","parent":"7","isEnd":true},{"id":"12","name":"1星级饭店子类的子类","parent":"9","isEnd":true}]};
var cates = cate.cate;
innerHtml = "<ul>";
//汇总根
function setContent(content) {
for(var i = 0; i < content.length; i++) {
if(content[i].parent == content[i].id) {
if(content[i].isEnd == true) {
//获取数据
innerHtml += "<li onclick='getData();'>" + content[i].name + "</li>";
} else {
//伸展合拢
innerHtml += "<li onclick='sss(this);'>" + content[i].name + "</li>";
}
setContentSub(content, i);
}
}
innerHtml += "</ul>";
document.write(innerHtml);
}
//汇总子集
function setContentSub(content,index) {
var tag = 0;
for(var j = 0; j < content.length; j++) {
if(content[j].parent != content[j].id && content[j].parent == content[index].id) {
tag++;
if(tag == 1) {
innerHtml += "<ul>";
if(content[j].isEnd == true) {
//获取数据
innerHtml += "<li onclick='getData();'>" + content[j].name + "</li>";
} else {
//伸展合拢
innerHtml += "<li onclick='sss();'>" + content[j].name + "</li>";
}
setContentSub(content, j);
} else {
if(content[j].isEnd == true) {
alert(content[j].name);
//获取数据
innerHtml += "<li onclick='getData();'>" + content[j].name + "</li>";
} else {
//伸展合拢
innerHtml += "<li onclick='sss();'>" + content[j].name + "</li>";
}
setContentSub(content, j);
}
}
}
if(tag > 0) {
innerHtml += "</ul>";
tag = 0;
}
}
setContent(cates);
function sss(obj) {
$(obj).siblings().toggle('slow');
}
function getData() {
alert('data');
}
//这种方式写的树状结构没有固定皮肤,需要自己加工
//而jquery插件dhtmlXTreeObjec有一套自己的皮肤,使用起来很方便,但是再用使用这个插件的时候要先准备好符合格式的数据
//var jsonClass = {id:0,item:[{id:'1',text:'景点景区',item:[{id:'5',text:'某景点'},{id:'6',text:'慕田峪长城'}]},{id:'2',text:'星级饭店',item:[{id:'7',text:'1星级饭店',item:[{id:'9',text:'1星级饭店子类',item:[{id:'12',text:'1星级饭店子类的子类'}]},{id:'11',text:'1星级饭店子类2'}]},{id:'8',text:'2星级饭店'}]},{id:'3',text:'旅行社'},{id:'4',text:'重点区域',item:[{id:'10',text:'重点区域子类'}]}]};
//转换方法
var xmlTree = "{id:0,item:[";
//汇总根类
function setContent(content) {
var tagA = 0;
for(var i = 0; i < content.length; i++) {
if(content[i].parent == content[i].id) {
tagA++;
if(tagA == 1) {
xmlTree += "{id:'" + content[i].id + "',text:'" + content[i].name + "'";
} else {
xmlTree += ",{id:'" + content[i].id + "',text:'" + content[i].name + "'";
}
setContentSub(content,i);
}
}
xmlTree += "]}";
//这个可以用return代替返回获取内容
document.write(xmlTree);
}
//汇总子集
function setContentSub(content,index) {
var tagB = 0;
for(var j = 0; j < content.length; j ++) {
if(content[j].parent != content[j].id && content[j].parent == content[index].id) {
tagB++;
if(tagB == 1) {
xmlTree += ",item:[";
xmlTree += "{id:'" + content[j].id + "',text:'" + content[j].name + "'";
} else {
xmlTree += ",{id:'" + content[j].id + "',text:'" + content[j].name + "'";
}
setContentSub(content,j);
}
}
if(tagB > 0) {
xmlTree += "]}";
} else {
xmlTree += "}";
}
}
setContent(cates);
分享到:
相关推荐
博文链接:https://clarancepeng.iteye.com/blog/193058
dhtmlxtree 的右键菜单 ,可以右键,添加,修改,删除结点
近来因项目需要,研究了一下dhtmlxtree,发现网上例子比较少,尤其是比较完整的例子。把自己做的demo整理了一下,上传上来,大家共享一下,欢迎提出改进意见。[转载]
2、然后修改所有与dhtmlXTreeItemObject有关(直接或者间接相关)的方法: _attachChildNode,insertNewItem,insertNewChild,insertNewNext,_recreateBranch,_parseXMLTree 注:_parseXMLTree方法是与loadXML,...
chromedriver-linux64-V124.0.6367.91稳定版
在官方的基础上改了检测头、导出onnx(适配tensorrt pro 项目)、测试demo等代码。 能够使用清华V2X数据集进行训练和测试。 https://www.bilibili.com/video/BV1Wd4y1G78M/?vd_source=0223c707743ff3013adaeff54aee3506 数据集来源:https://thudair.baai.ac.cn/index 基于Yolov7 tiny,加入了距离回归 模型没收敛完,随便试了下,所以预测有抖动 使用TRT加速,在AGX Xavier上推理大约4ms V2X使用tools/convertlabel2yolo.ipynb 进行数据集转换
基于STM32F101单片机设计Bluetooth Sentinel 主板硬件(原理图+PCB)工程文件,仅供学习设计参考。
【前端热门框架【vue框架】】——条件渲染和列表渲染的学习的秒杀方式 (2)
liba2ps1-4.14-bp155.4.9.aarch64
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
基于嵌入式
基于matlab实现关于语音信号声源定位DOA估计所用的一些传统算法.rar
sdk.config
海康威视DS-K1T342M人脸识别门禁机升级固件
2024-2030全球与中国太阳能发电机市场现状及未来发展趋势
毕业设计:基于springboot的中小企业财务管理系统(源码 + 数据库 + 说明文档) 2 开发技术简介 6 2.1 基于B/S结构开发 6 2.2 jsp语言简介 6 2.3MYSQL简介 6 2.4 eclipse工具 7 3 需求分析 7 3.1 可行性分析 7 3.1.1 经济可行性 7 3.1.2 技术可行性 7 3.1.3 操作可行性 7 3.2 功能需求分析 8 3.3 非功能需求分析 8 4 系统设计 9 4.1 数据库设计 9 4.2 系统模块总体设计 10 5 系统详细设计 10 5.1 后台登录页面 10 5.2 管理员信息 11 5.3 财务人员信息 11 5.4 资产负债 12 5.5 税收管理 12 6 系统测试 13 6.1 测试的目的 13 6.2 测试的方法 13 6.3 测试的重要性 14 6.4 测试内容 14 6.5 测试结果 14
python tkinter-08-盒子模型.ev4.rar
HAL 驱动库和 LL 驱动库函数说明 介绍各个函数的使用方法 包含HAL库和LL库 这个官网是PDF格式的 体积巨大 这个 WORD 格式的体积小巧 介绍 HAL 驱动库已经实现了适用于 PY32F0xx 系列芯片的一整套 APIs,这些 APIs 能够使应用程序与底层硬 件之间的交互更加简单、方便。 在 HAL 驱动库中用户能够调用的 APIs 可以分为两类:通用 APIs 和扩展 APIs。通用 APIs 为所有 PY32F0xx 系列芯片提供通用功能的驱动。扩展 APIs 则根据不同型号提供扩展功能的 APIs。 HAL 驱动库并不是基于 IP 所构建的,而是基于外设的特性和功能实现的。例如,USART 拥有 UART 和 USART 两种功能,每种功能都拥有一组独立的驱动程序来支持,并且它们的驱动程序是相互分离的。 HAL 驱动库函数的入口处均有断言函数,断言函数用来校验输入参数是否合法。这种校验方式提高了驱 动程序的健壮性。用户也可以使用断言函数来进行编写和调试应用程序。 HAL 驱动库提供的 APIs 均具有很高的可移植性,并且它们对用户屏蔽了 MCU 和底层硬
2024年全球电大提琴行业总体规模、主要企业国内外市场占有率及排名
Bug Bounty Tip - i春秋Self-XSS变废为宝的奇思妙想 i春秋技术分享,将self-xss利用扩大化,奇思妙想可以借鉴。