做 WEB 程序的人多数应该听说过 dtree,这个插件还不错,简单、效率还算可以,而且可以在cookie 中保存树的状态(刷新页面树会保持节点展开、收拢状态),如果节点量不是很大的情况下,是个不错的选择。但这个插件不带 checkbox。
dtree 的节点(Node)是个对象,所有节点保存在树(dTree)对象的一个属性里,重载了两个对象的 toString()函数,在页面显示的时候执行所有的 toString()操作。搞清程序的大致流程,改造工作就比较简单了,分以下几步:
1.给树对象的 config 对象添加一个控制 checkbox 是否显示的属性;
this.config = {
target : null,
folderLinks : true,
useSelection : true,
useCookies : true,
useLines : true,
useIcons : true,
useStatusText : false,
closeSameLevel : false,
inOrder : false,
check:false //**新加的
}
2.修改节点对象的 toString()方法,添加...input type="checkbox"...代码;
if(this.config.check==true){
str+= '<input type="checkbox" id="c'+ this.obj + nodeId + '" onclick="javascript:'+this.obj+'.cc('+nodeId+')"/>';
}
3.写 checkbox 页面元素的 onclick 事件处理函数,这个函数用来智能控件树节点的 checkbox 状态。也就是说,勾选一个节点的 checkbox,自动勾选其所有父节点及其所有子节点;取消勾选节点的 checkbox,自动取消勾选其所有子节点的勾选状态,而其父节点的勾选状态不变。这个是个比较重要的新功能,一些具有 checkbox 的页面插件并不具备这个功能,这个功能使用递归算法实现。
dTree.prototype.cc=function(nodeId){
var cs = document.getElementById("c"+this.obj+nodeId).checked;
var n,node = this.aNodes[nodeId];
var len =this.aNodes.length;
for (n=0; n<len; n++) {
if (this.aNodes[n].pid == node.id) {
document.getElementById("c"+this.obj+n).checked=cs;
this.cc(n);
}
}
if(cs==false)return;
var pid=node.pid;
var bSearch;
do{
bSearch=false;
for(n=0;n<len;n++){
if(this.aNodes[n].id==pid){
document.getElementById("c"+this.obj+n).checked=true;
pid=this.aNodes[n].pid;
bSearch= true;
break;
}
}
}while(bSearch==true);
}
分享到:
相关推荐
**dtree与dtree_checkbox: JS控件的深入解析** 在网页开发中,交互性和用户体验是至关重要的元素,而JavaScript(简称JS)作为客户端脚本语言,为实现这些功能提供了强大的支持。在这个话题中,我们将重点探讨两种...
标题 "dtree_checkbox" 暗示我们正在讨论一个与数据树(treeview)相关的功能,特别是涉及复选框(checkbox)的实现。在IT领域,数据树是一种常用的数据结构,用于展示层次化数据,而复选框则常用于提供多选选项。这...
5、加addCbx方法,专用于添加checkbox节点 二、相关方法及参数说明: 1、实例化dTree对象方法参数说明 new dTree(objName, rootDir, imgDir); objName:dTree实例对象名称, rootDir:dTree根目录, imgDir:图标...
【dtree带checkbox】是一种在Java项目中常用的交互式树形结构组件,它结合了复选框(checkbox)功能,允许用户对树节点进行多选操作。在网页或桌面应用程序中,这种组件常用于数据组织和筛选,例如文件管理器、权限...
dtree修改版-添加checkbox: 由于原版dtree作者没有加上复选框功能,我用来做用户模块权限功能的时候很不好用,网上也找到一些基于dtree添加了checkbox的修改版,但是用起来很不顺手,最后不得不根据自己的需要一再...
在很多应用场景中,如文件系统、组织结构或者导航菜单,用户需要有选择多个节点的能力,这就引入了`checkbox`(复选框)功能。本文将详细介绍如何在DTree中实现复选框功能,以及它带来的便利性。 首先,我们来理解...
dtree通常用于展示具有层级关系的数据,例如文件系统、组织结构或者网站导航等,而新增的checkbox特性则使得用户能够对树形节点进行多选操作,提高了用户在数据筛选、操作和选择时的便利性。 在dtree+checkbox中,...
**dtree组件与Checkbox功能详解** dtree组件是一款基于JavaScript实现的树形控件,它提供了丰富的功能,便于用户在Web应用中展示层次结构的数据。在这个特定的案例中,我们关注的是带有Checkbox功能的dtree,这使得...
2. **Checkbox功能**: 在`dtree`中,添加复选框功能允许用户对树形结构中的各个节点进行多选操作。每个节点可以有一个与之关联的复选框,用户可以单独选择某个节点,也可以通过全选或选择父节点来影响其子节点的选择...
6. **扩展和自定义**:DTree可能提供多种扩展和自定义选项,如自定义节点模板、添加拖放功能、实现搜索和过滤等。理解这些高级特性有助于构建更复杂的树状菜单应用。 7. **代码示例**:博客通常会提供代码片段或...
具体来说,当`check`属性为`true`时,代码会在每个节点前添加一个`<input type="checkbox">`元素。例如: ```javascript if (this.config.check === true) { str += '<input type="checkbox" id="c' + this.obj + ...
通过在每个节点旁边添加checkbox,用户可以方便地勾选目标,然后执行批量操作如移动、删除或下载。 要实现这个功能,开发者需要在dtree的配置中定义checkbox的相关参数,包括是否显示checkbox、选择模式(如单选、...
2. **事件委托**:为了提高性能,可以使用事件委托,将事件监听器添加到dtree容器上,而不是每个节点,通过事件对象判断触发事件的节点,然后更新对应的`checkbox`状态。 3. **递归处理**:在处理子节点选中状态时,...
而“带checkBox的dtree”则可能指的是在可视化决策树的过程中,为每个节点或分支添加了复选框功能,以增强用户交互性,使得用户能够更加直观地选择、检查或修改树的结构。 【描述】:“NULL” 由于描述为空,我们...
"对带checkbox的dtree树复选操作的一点改进"这个主题聚焦于一个常见的UI组件——带有复选框的树形结构(dtree),它常用于展现层级关系的数据,并允许用户进行多选操作。这篇博客的作者通过分享自己的实践经验和代码...
在`dtree`中集成的`checkbox`选择框功能,则为用户提供了一种多选机制,增强了用户与树形结构的交互性。 `dtree`框架的核心特性包括: 1. **层级展示**:`dtree`能够将数据组织成树状结构,每一级节点都可以有子...
"带checkbox的dtree权限树"是一种常见的实现方式,它结合了数据树(dtree)与复选框(checkbox)功能,用于展示层级关系的权限结构。这种权限树常用于角色分配、用户权限设置以及权限级别的可视化管理。 1. **dtree...
在分享的代码中,开发者已经完成了对`dtree`的修改,添加了`checkbox`功能。这可能包括了对`dtree`源码的修改,或者创建了一个新的`dtree`子类来扩展功能。通过查看源代码,我们可以学习到如何在实际项目中实现类似...
3. `dtree_checkbox.js`:复选框dtree的实现,修改了`dtree.js`的源码,加入了复选框元素和相应的逻辑。 4. HTML和CSS文件:用于展示和样式化dtree实例。 5. 示例数据:可能包括JSON或其他格式的数据文件,用于填充...
在实现这个功能的过程中,开发者可能对"dtree"的原始JS文件进行了深入研究,理解了其内部的数据结构和事件处理机制,然后通过添加或修改代码,实现了上述的逻辑变更。这涉及到JavaScript的DOM操作、事件监听、数据...