// 树状选择器 //结构 var json = { '常州饲料厂': { '生产饲料部': null, '物流部':null }, '扬州饲料厂': { '生产饲料部': null, '物流部':null }, '无锡饲料厂': { '生产饲料部': null, '物流部':null }, '泰州饲料厂': { '生产饲料部': null, '物流部':null }, '苏州饲料厂': { '生产饲料部': null, '物流部':null }, }; //这里生成DOM function generate(json, par) { for (var attr in json) { var ele = document.createElement('li'); if (!json[attr]) ele.innerHTML = ' <input type="checkbox"></input>' + attr; else { ele.innerHTML = '<span><span class="switch-open" onclick="toggle(this)"></span><input type="checkbox" onclick="checkChange(this)"></input>' + attr + '</span>'; var nextpar = document.createElement('ul'); ele.appendChild(nextpar); generate(json[attr], nextpar); } par.appendChild(ele); } } generate(json, document.getElementById('container')); //处理展开和收起 function toggle(eve) { var par = eve.parentNode.nextElementSibling; if (par.style.display == 'none') { par.style.display = 'block'; eve.className = 'switch-open'; } else { par.style.display = 'none'; eve.className = 'switch-close'; } } //处理全部勾选和全部不选 function checkChange(eve) { var oul = eve.parentNode.nextElementSibling; if (eve.checked) { for (var i = 0; i < oul.querySelectorAll('input').length; i++) { oul.querySelectorAll('input')[i].checked = true; } } else { for (var i = 0; i < oul.querySelectorAll('input').length; i++) { oul.querySelectorAll('input')[i].checked = false; } } }

时间: 2024-04-14 22:31:56 浏览: 19
这段代码是一个树状选择器的实现。它使用一个 JSON 对象来表示树的结构,然后通过递归生成对应的 DOM 元素。每个节点都可以展开或收起,并且可以选择或取消选择。 在 `generate` 函数中,通过遍历 JSON 对象的属性来生成对应的 DOM 元素。如果属性的值为 `null`,则生成一个包含复选框和文本的 `li` 元素;如果属性的值不为 `null`,则生成一个包含展开/收起按钮、复选框和文本的 `li` 元素,并递归调用 `generate` 函数生成下一级的 DOM 元素。 在 `toggle` 函数中,通过切换子元素列表的显示状态和切换按钮的样式来实现展开和收起功能。 在 `checkChange` 函数中,根据复选框的状态来选择或取消选择所有子元素的复选框。 这样,通过调用 `generate` 函数,可以将 JSON 数据转换为对应的树状选择器的 DOM 结构,并且可以通过展开/收起按钮和复选框进行交互操作。
相关问题

请解释代码QTreeWidgetItem* item=new QTreeWidgetItem(MainWindow::itTopItem); //节点类型为itTopItem

在Qt中,QTreeWidgetItem是一个树形结构中的节点,每个节点可以包含多个子节点。节点类型可以设置为不同的枚举值,包括itTopItem、itGroupItem和itChildItem,用于表示不同层次的节点。 在这行代码中,item被声明为QTreeWidgetItem类型的指针,它被初始化为一个新的QTreeWidgetItem,并且节点类型被设置为itTopItem。这意味着item是一个顶层节点,即它是树形结构中的根节点或者没有父节点的节点。因此,该节点将位于树形结构的最上层,并且可以包含其他子节点。

<treeselect v-model="form.facilityPositionId" :options="facilityOptions" :show-count="true" placeholder="请选择设备位置" />

这段代码是使用 Vue.js 的组件库 Element UI 中的 <treeselect> 组件,用于实现树状下拉选择器的功能。具体解释如下: - `v-model`:绑定数据,将选择的值保存到 `form.facilityPositionId` 变量中。 - `:options`:传入下拉选择器的选项数据,这里使用了 `facilityOptions` 变量,该变量应该是一个数组,数组中每个元素表示一个选项,具体格式应该为 `{id: 1, label: '选项1', children: []}`,其中 `id` 表示选项的唯一标识符,`label` 表示选项的显示文本,`children` 表示选项的子选项,可选。 - `:show-count`:是否显示选项的计数器(即显示选项个数),这里设置为 `true`,表示显示计数器。 - `placeholder`:选择器的占位文本,当没有选择任何选项时显示。 需要注意的是,这里的 <treeselect> 组件需要在 Element UI 中进行引入才能使用,具体引入方法可以查看 Element UI 的官方文档。

相关推荐

最新推荐

recommend-type

利用java+mysql递归实现拼接树形JSON列表的方法示例

主要给大家介绍了关于利用java+mysql递归实现拼接树形JSON列表的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起看看吧。
recommend-type

Java递归算法构造JSON树形结构

Java递归算法构造JSON树形结构,Java递归算法构造JSON树形结构Java递归算法构造JSON树形结构
recommend-type

Oracle递归树形结构查询功能

oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的。这篇文章给大家介绍了Oracle递归树形结构查询功能,需要的朋友参考下
recommend-type

python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例

PyQt5树形结构控件QTreeWidget简介 QTreeWidget 类根据预设的模型提供树形显示控件。 QTreeWidget 使用类似于 QListView 类的方式提供一种典型的基于 item 的树形交互方法类,该类基于QT的“模型/视图”结构,提供了...
recommend-type

多叉树结合JavaScript树形控件实现无限级树形结构(一种构建多级有序树形结构JSON(或XML)数据源的方法)

多叉树结合JavaScript树形控件实现无限级树形结构(一种构建多级有序树形结构JSON(或XML)数据源的方法)
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB图像处理算法宝典:从理论到实战

![MATLAB图像处理算法宝典:从理论到实战](https://img-blog.csdnimg.cn/20200717112736401.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1emhhbzk5MDE=,size_16,color_FFFFFF,t_70) # 1. MATLAB图像处理基础理论 MATLAB图像处理是一种利用MATLAB编程语言进行图像处理的强大工具。它提供了丰富的函数和工具箱,用于图像获取、增强、分
recommend-type

matlab中1/x的非线性规划

在MATLAB中,可以使用非线性规划函数(`fmincon`)来优化一个包含1/x的非线性目标函数。下面是一个简单的例子: ```matlab % 定义目标函数 fun = @(x) 1/x; % 定义约束函数(这里没有约束) nonlcon = []; % 定义初始点 x0 = 1; % 定义优化选项 options = optimoptions('fmincon', 'Display', 'iter'); % 进行非线性规划 [x, fval] = fmincon(fun, x0, [], [], [], [], [], [], nonlcon, options); ``` 在
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。