写个树型穿梭框

以下是一个简单的树型穿梭框的示例代码(使用HTML、CSS和JavaScript):

HTML部分:

<div id="tree"><ul><li><span>节点1</span><ul><li><span>节点1.1</span></li><li><span>节点1.2</span></li></ul></li><li><span>节点2</span><ul><li><span>节点2.1</span></li><li><span>节点2.2</span></li></ul></li></ul>
</div><div id="shuttle"><select multiple></select><button id="toRight">→</button><button id="toLeft">←</button>
</div>

CSS部分:

#tree ul {list-style-type: none;padding-left: 20px;
}#tree span {cursor: pointer;
}#shuttle {margin-top: 20px;
}#shuttle button {margin-top: 5px;margin-bottom: 5px;
}

JavaScript部分:

// 获取树型结构中所有的树节点
const treeNodes = document.querySelectorAll("#tree span");// 获取穿梭框的相关元素
const selectBox = document.querySelector("#shuttle select");
const toRightBtn = document.querySelector("#toRight");
const toLeftBtn = document.querySelector("#toLeft");// 点击树节点时触发的事件处理程序
function treeNodeClick(event) {const nodeText = event.target.textContent;// 判断是否已经存在于穿梭框中,若不存在则添加到穿梭框中if (!selectBox.querySelector(`option[value="${nodeText}"]`)) {const option = document.createElement("option");option.value = nodeText;option.textContent = nodeText;selectBox.appendChild(option);}
}// 点击右移按钮时触发的事件处理程序
function moveToRight() {const selectedOptions = selectBox.selectedOptions;// 移动所有被选中的选项到右侧Array.from(selectedOptions).forEach(option => {option.remove();document.querySelector(`#tree span:contains(${option.value})`).classList.remove("selected");});
}// 点击左移按钮时触发的事件处理程序
function moveToLeft() {const selectedOptions = selectBox.selectedOptions;// 移动所有被选中的选项到左侧Array.from(selectedOptions).forEach(option => {const span = document.querySelector(`#tree span:contains(${option.value})`);if (span) {span.classList.add("selected");} else {const li = document.createElement("li");const newSpan = document.createElement("span");newSpan.textContent = option.value;newSpan.classList.add("selected");li.appendChild(newSpan);document.querySelector("#tree ul").appendChild(li);}option.remove();});
}// 为树节点添加点击事件监听器
treeNodes.forEach(node => {node.addEventListener("click", treeNodeClick);
});// 为右移按钮添加点击事件监听器
toRightBtn.addEventListener("click", moveToRight);// 为左移按钮添加点击事件监听器
toLeftBtn.addEventListener("click", moveToLeft);

请将以上代码复制到一个HTML文件中并在浏览器中打开以查看效果。在树型结构中点击节点,然后点击右移按钮可将节点移动到穿梭框中,点击左移按钮可将选定的节点移回到树型结构中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/750185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏引擎中的动画基础

一、动画技术简介 视觉残留理论 - 影像在我们的视网膜上残留1/24s。 游戏中动画面临的挑战&#xff1a; 交互&#xff1a;游戏中的玩家动画需要和场景中的物体进行交互。实时&#xff1a;最慢需要在1/30秒内算完所有的场景渲染和动画数据。&#xff08;可以用动画压缩解决&am…

QT 状态机的使用

QT 状态机的使用场景&#xff1a; QT 状态机适用于需要管理复杂状态和状态转换的场景&#xff0c;例如游戏开发、UI界面控制、自动化控制系统等。它可以帮助组织和管理程序中的各种状态&#xff0c;并定义状态之间的转换规则&#xff0c;使程序逻辑清晰、易于维护。 QT 状态机…

iOS 开发 block 等待 block 或 block 等待

block 等待 在 iOS 开发中&#xff0c;如果你想要一个 block&#xff08;闭包&#xff09;等待执行完成&#xff0c;通常意味着你想要同步地执行这个 block&#xff0c;而不是异步地。然而&#xff0c;block 本身并不直接支持同步等待&#xff0c;因为它们是作为函数对象来设计…

用SeaTunnel从SQL Server向Elasticsearch同步数据

文章目录 引言I 步骤1.1 环境准备1.2 配置JDBC插件1.3 编写SeaTunnel任务配置II Enable Sql Server CDC引言 SeaTunnel 的官网 https://seatunnel.apache.org/ Support SQL Server Version: server:2008 (Or later version for information only)Supported DataSource Info: …

抖去推无人直播+矩阵托管+AI文案撰写一体化工具如何开发搭建

一、 开发和搭建抖去推无人直播矩阵托管AI文案撰写一体化工具需要以下步骤&#xff1a; 确定功能需求&#xff1a;确定抖去推无人直播、矩阵托管和AI文案撰写的具体功能需求&#xff0c;如直播推流、直播管理、托管服务、AI文案生成等。 技术选型&#xff1a;选择适合开发该工…

LeetCode 395. 至少有K个重复字符的最长子串

解题思路 一道滑动窗口题型&#xff0c;不过滑动窗口的长度是不同种类元素的个数。 这里需要定义两个变量 cnt,overk。overk表示的是满足大于k的字符数, cnt表示的是该窗口中不同元素的个数且cnt>1&&cnt<26。 相关代码 class Solution {public int longestSub…

动手学习深度学习之环境配置

创建conda虚拟环境 下载anaconda&#xff0c;安装到计算机&#xff0c;修改镜像源到国内 show_channel_urls: true channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/- http://mirrors.tu…

52. 携带研究材料(第七期模拟笔试)

52. 携带研究材料&#xff08;第七期模拟笔试&#xff09; 时间限制&#xff1a;1.000S 空间限制&#xff1a;128MB 题目描述 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成果。他需要带一些研究材料&#xff0c;但是他的…

CSS3技巧38:3D 翻转数字效果

博主其它CSS3 3D的文章&#xff1a; CSS3干货4&#xff1a;CSS中3D运用_css 3d-CSDN博客 CSS3干货5&#xff1a;CSS中3D运用-2_中3d-2-CSDN博客 CSS3干货6&#xff1a;CSS中3D运用-3_css3d 使用-CSDN博客 最近工作上烦心的事情太多&#xff0c;只有周末才能让我冷静一下 cod…

LeetCode 每日一题 2024/3/11-2024/3/17

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 3/11 2129. 将标题首字母大写3/12 1261. 在受污染的二叉树中查找元素3/13 2864. 最大二进制奇数3/14 2789. 合并后数组中的最大元素3/15 2312. 卖木头块3/16 2684. 矩阵中移…

HTTPS(超文本传输安全协议)工作过程

一、简述HTTPS HTTPS超文本传输协议&#xff08;全称&#xff1a;Hypertext Transfer Protocol Secure &#xff09;&#xff0c;是以安全为目标的 HTTP 通道&#xff0c;在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL&#x…

对建造者模式的理解

目录 一、为什么需要建造者模式&#xff1f;1、场景12、场景23、解决上述场景的办法&#xff1a;建造者模式 二、练习1、题目描述 【[来源](https://kamacoder.com/problempage.php?pid1084)】2、输入描述3、输出描述4、输入示例5、输出示例6、参考 三、思考1、一般常用的是lo…

vue 实现下载pdf格式的文件

第一步 安装下载插件 npm install html2canvas jspdf --save第二步 给vue原型上面挂载一个下载页面pdf的方法&#xff1b;在项目工具方法存放文件夹utils中创建htmlToPdf.js文件&#xff0c;代码如下 // 导出页面为PDF格式 import html2Canvas from html2canvas import JsP…

Linux第78步_使用原子整型操作来实现“互斥访问”共享资源

使用原子操作来实现“互斥访问”LED灯设备&#xff0c;目的是每次只允许一个应用程序使用LED灯。 1、创建MyAtomicLED目录 输入“cd /home/zgq/linux/Linux_Drivers/回车” 切换到“/home/zgq/linux/Linux_Drivers/”目录 输入“mkdir MyAtomicLED回车”&#xff0c;创建MyA…

Jmeter---分布式

分布式&#xff1a;多台机协作&#xff0c;以集群的方式完成测试任务&#xff0c;可以提高测试效率。 分布式架构&#xff1a;控制机&#xff08;分发任务&#xff09;与多台执行机&#xff08;执行任务&#xff09; 环境搭建&#xff1a; 不同的测试机上安装 Jmeter 配置基…

2024最新手赚手机软件APP下载排行网站源码及应用商店源码

这是一款简洁蓝色的手机软件下载应用排行、平台和最新发布网站&#xff0c;采用响应式织梦模板。主要包括主页、APP列表页、APP详情介绍页、新闻资讯列表、新闻详情页、关于我们等模块页面。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88898956 更…

政安晨:【深度学习处理实践】(九)—— Transformer架构

咱们接着这个系列的上一篇文章继续&#xff1a; 政安晨&#xff1a;【深度学习处理实践】&#xff08;八&#xff09;—— 表示单词组的两种方法&#xff1a;集合和序列https://blog.csdn.net/snowdenkeke/article/details/136762323 Transformer是一种架构&#xff0c;用于在…

k8s之图形界面DashBoard【九】

文章目录 9. DashBoard9.1 部署Dashboard9.2 使用DashBoard 镇场 9. DashBoard 之前在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的。其实&#xff0c;为了提供更丰富的用户体验&#xff0c;kubernetes还开发了一个基于web的用户界面&#xff08;Dashboard&…

vscode jupyter 如何关闭声音

网上之前搜的zen模式失败 仅仅降低sound失败 #以下是成功方式&#xff1a; 首先确保user和remote的声音都是0&#xff1a; 然后把user和remote的以下设置都设置为off就行了&#xff01; 具体操作参考 https://stackoverflow.com/questions/54173462/how-to-turn-off-or-on-so…

从大模型到Agentscope——分布式Multi-Agent应用开发与部署

目录 Why需要分布式 案例 多进程的分布书版本能快速提升速度 分布式的挑战 AgentScope分布式解决 方案 实现RPC Agent 基于Actor模式的并行调度缺点&#xff1a;需要Agent内部决定消息传递目标 被调用的Agent立即返回占位符placeholder to_dist: 开启自动将单机进行扩展…