JavaScript实现左右下拉框动态增删示例

下面是详细的“JavaScript实现左右下拉框动态增删”攻略:

准备工作

在开始实现之前,我们需要先准备好需要用到的 HTML 结构和 JavaScript 文件。具体代码如下:

HTML 结构:

<!-- 左右两边的下拉框容器 -->
<div class="selectBox">
    <select multiple="multiple" class="allItems" size="15"></select>
    <div class="btnBox">
        <button class="addBtn">&gt;&gt;</button>
        <button class="delBtn">&lt;&lt;</button>
    </div>
    <select multiple="multiple" class="selectedItems" size="15"></select>
</div>

其中,.allItems 表示所有可选中的项目,.selectedItems 表示已被选中的项目,.addBtn.delBtn 分别代表“增加”和“删除”按钮。

JavaScript 文件:

// 获取左右两个下拉框对象
var allList = document.querySelector(".allItems");
var selectedList = document.querySelector(".selectedItems");

// 绑定“增加”按钮点击事件
var addButton = document.querySelector(".addBtn");
addButton.onclick = function () {
    // 获取所有选中的项目
    var selectedOptions = allList.querySelectorAll("option:checked");
    for (var i = 0; i < selectedOptions.length; i++) {
        // 将选中的项目加入右侧下拉框
        selectedList.appendChild(selectedOptions[i]);
    }
};

// 绑定“删除”按钮点击事件
var delButton = document.querySelector(".delBtn");
delButton.onclick = function () {
    // 获取所有选中的项目
    var selectedOptions = selectedList.querySelectorAll("option:checked");
    for (var i = 0; i < selectedOptions.length; i++) {
        // 将选中的项目加入左侧下拉框
        allList.appendChild(selectedOptions[i]);
    }
};

在这段 JavaScript 代码中,我们首先获取了左右两个下拉框的对象,并绑定了“增加”和“删除”按钮的点击事件。其中,“增加”按钮的点击事件会将左侧的选中项加入右侧下拉框,“删除”按钮的点击事件会将右侧的选中项加入左侧下拉框。

示例说明

示例1:多个下拉框之间分别进行增删项操作

例如,我们有两个下拉框,分别为 “allBox1” 和 “selectedBox1”,以及 “allBox2” 和 “selectedBox2”。如果我们只需要在单个下拉框中进行操作,只需将类选择器 .allItems.selectedItems 替换成相应下拉框的 ID 或类名即可。例如:

<!-- 第1个下拉框容器 -->
<div class="selectBox">
    <select multiple="multiple" class="allItems1" size="15"></select>
    <div class="btnBox">
        <button class="addBtn1">&gt;&gt;</button>
        <button class="delBtn1">&lt;&lt;</button>
    </div>
    <select multiple="multiple" class="selectedItems1" size="15"></select>
</div>

<!-- 第2个下拉框容器 -->
<div class="selectBox">
    <select multiple="multiple" class="allItems2" size="15"></select>
    <div class="btnBox">
        <button class="addBtn2">&gt;&gt;</button>
        <button class="delBtn2">&lt;&lt;</button>
    </div>
    <select multiple="multiple" class="selectedItems2" size="15"></select>
</div>

JavaScript 代码:

// 获取左右两个下拉框对象
var allList1 = document.querySelector(".allItems1");
var selectedList1 = document.querySelector(".selectedItems1");
var allList2 = document.querySelector(".allItems2");
var selectedList2 = document.querySelector(".selectedItems2");

// 绑定第1个“增加”按钮点击事件
var addButton1 = document.querySelector(".addBtn1");
addButton1.onclick = function () {
    // 获取所有选中的项目
    var selectedOptions = allList1.querySelectorAll("option:checked");
    for (var i = 0; i < selectedOptions.length; i++) {
        // 将选中的项目加入右侧下拉框
        selectedList1.appendChild(selectedOptions[i]);
    }
};

// 绑定第1个“删除”按钮点击事件
var delButton1 = document.querySelector(".delBtn1");
delButton1.onclick = function () {
    // 获取所有选中的项目
    var selectedOptions = selectedList1.querySelectorAll("option:checked");
    for (var i = 0; i < selectedOptions.length; i++) {
        // 将选中的项目加入左侧下拉框
        allList1.appendChild(selectedOptions[i]);
    }
};

// 绑定第2个“增加”按钮点击事件
var addButton2 = document.querySelector(".addBtn2");
addButton2.onclick = function () {
    // 获取所有选中的项目
    var selectedOptions = allList2.querySelectorAll("option:checked");
    for (var i = 0; i < selectedOptions.length; i++) {
        // 将选中的项目加入右侧下拉框
        selectedList2.appendChild(selectedOptions[i]);
    }
};

// 绑定第2个“删除”按钮点击事件
var delButton2 = document.querySelector(".delBtn2");
delButton2.onclick = function () {
    // 获取所有选中的项目
    var selectedOptions = selectedList2.querySelectorAll("option:checked");
    for (var i = 0; i < selectedOptions.length; i++) {
        // 将选中的项目加入左侧下拉框
        allList2.appendChild(selectedOptions[i]);
    }
};

以上代码中,我们分别绑定了不同下拉框的“增加”和“删除”按钮点击事件,并在点击事件中分别对应不同的“allList”和“selectedList”对象进行操作。

示例2:在已选中的下拉框中搜索并添加新项目

在上面这个示例中,我们只是简单地将所有选中的项移动到右侧下拉框。但如果我们想要在已选中的下拉框中进行搜索,并将搜索结果添加到右侧下拉框中,应该怎么做呢?下面我们就来看一下示例代码:

<!-- 左右两边的下拉框容器 -->
<div class="selectBox">
    <select multiple="multiple" class="allItems" size="15"></select>
    <div class="btnBox">
        <button class="addBtn">&gt;&gt;</button>
        <button class="delBtn">&lt;&lt;</button>
    </div>
    <select multiple="multiple" class="selectedItems" size="15"></select>
</div>

<!-- 搜索框 -->
<input type="text" class="searchBox" />

<!-- 数据数组 -->
<script>
  var data = [
    {"name": "苹果", "value": 1},
    {"name": "橘子", "value": 2},
    {"name": "香蕉", "value": 3},
    {"name": "西瓜", "value": 4},
    {"name": "葡萄", "value": 5},
    {"name": "梨子", "value": 6}
  ];
</script>

在这段代码中,我们增加了一个搜索框和一个数据数组。搜索框用于输入需要搜索的项名称,数据数组包含了所有可添加的选项信息。

接下来,我们来实现 JavaScript 代码:

// 搜索框对象
var searchBox = document.querySelector(".searchBox");
// 左侧下拉框对象
var allList = document.querySelector(".allItems");
// 右侧下拉框对象
var selectedList = document.querySelector(".selectedItems");

// 绑定“搜索”按钮点击事件
var searchButton = document.querySelector(".searchBtn");
searchButton.onclick = function () {
    // 获取待搜索的值
    var keyword = searchBox.value.toLowerCase();
    // 遍历数据数组
    for (var i = 0; i < data.length; i++) {
        // 判断搜索结果
        if (data[i].name.toLowerCase().includes(keyword)) {
            // 判断结果是否已存在右侧下拉框中
            if (!selectedList.querySelector("option[value='" + data[i].value + "']")) {
                // 插入右侧下拉框
                var option = new Option(data[i].name, data[i].value);
                selectedList.add(option);
            }
        }
    }
};

// 绑定“增加”按钮点击事件
var addButton = document.querySelector(".addBtn");
addButton.onclick = function () {
    // 获取所有选中的项目
    var selectedOptions = allList.querySelectorAll("option:checked");
    for (var i = 0; i < selectedOptions.length; i++) {
        // 将选中的项目加入右侧下拉框
        selectedList.appendChild(selectedOptions[i]);
    }
};

// 绑定“删除”按钮点击事件
var delButton = document.querySelector(".delBtn");
delButton.onclick = function () {
    // 获取所有选中的项目
    var selectedOptions = selectedList.querySelectorAll("option:checked");
    for (var i = 0; i < selectedOptions.length; i++) {
        // 将选中的项目加入左侧下拉框
        allList.appendChild(selectedOptions[i]);
    }
};

该 JavaScript 代码中,我们增加了一个“搜索”按钮点击事件,用于对数据数组中的项进行搜索并添加到右侧下拉框中。另外,“增加”和“删除”按钮的操作方式和示例1相同。

在这个示例中,我们在已选中的下拉框中进行了搜索,并将结果加入到右侧下拉框中。这个功能对于需要手工添加大量选项的情况,可以提高效率,同时也可以预防漏填选项的情况。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现左右下拉框动态增删示例 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • css3让div随鼠标移动而抖动起来

    下面是“CSS3让div随鼠标移动而抖动起来”的攻略: 1. 使用CSS3动画实现div随鼠标移动而抖动 CSS3动画是实现抖动效果的一种常用方式。具体的实现步骤如下: 1.1 定义样式和HTML结构 首先,我们需要定义一个style标签,用来存放CSS样式。在样式中,我们需要定义一个用来显示抖动效果的div元素,可以设置它的宽度、高度、边框、背景色等基本样…

    css 2023年6月10日
    00
  • jQuery过滤选择器经典应用

    接下来我将详细讲解“jQuery过滤选择器经典应用”的完整攻略。 一、什么是jQuery过滤选择器 jQuery过滤选择器是指根据一定的条件对HTML元素进行过滤筛选,最终获得需要的元素。过滤选择器一般用于从匹配元素集合中筛选出符合特定条件的元素,可以帮助我们更快地定位需要的元素,提高代码效率。 常用的jQuery过滤选择器有以下几种: 过滤选择器 说明 :…

    css 2023年6月10日
    00
  • 魔兽世界怀旧服决斗俱乐部新赛有什么奖励 决斗俱乐部新赛季规则详解

    魔兽世界怀旧服决斗俱乐部新赛奖励 近日,魔兽世界怀旧服官方公布了决斗俱乐部新赛的规则和奖励,本文将为大家详细解读。 奖励 本次决斗俱乐部新赛季的奖励主要有以下四个方面: 等级排名奖励:在赛季结束后,将统计各选手决斗场地对战获胜次数排名后,奖励前列选手不同等级的徽章。 标准淘汰赛奖励:决斗俱乐部将会举办标准淘汰赛,根据选手在淘汰赛中的表现,赠送丰富的奖励。例如…

    css 2023年6月10日
    00
  • UI自动化定位常用实现方法代码示例

    下面是关于“UI自动化定位常用实现方法代码示例”的完整攻略: 理解UI自动化定位 在进行UI自动化测试时,定位元素是非常关键的一步,因为测试脚本需要通过定位元素才能进行后续的操作和断言。常用的元素定位方式包括:id、name、class、tag、xpath等。在实现元素定位时,还需要考虑定位的准确性、稳定性和代码的可维护性。 常用的UI自动化定位方法 1. …

    css 2023年6月9日
    00
  • WordPress菜单CSS类选项设置方法

    下面我来为您详细讲解“WordPress菜单CSS类选项设置方法”的完整攻略。 一、什么是WordPress菜单CSS类选项? 在WordPress中,可以通过菜单功能来管理和展示站点的各个导航链接。而CSS(Cascading Style Sheets)类则是用来设置菜单选项之间的样式和效果。通过在菜单选项中添加CSS类,可以实现自定义菜单样式的目的。 二…

    css 2023年6月10日
    00
  • 关于IE6、7、8下实现盒阴影的几个注意点

    关于IE6、7、8下实现盒阴影的几个注意点 在现代浏览器中,实现盒阴影相对比较简单,但在IE6、7、8下需要注意一些细节问题,接下来将通过两条示例说明这些注意点。 IE6、7、8下使用filter滤镜实现盒阴影 IE6、7、8下可以使用filter滤镜属性来实现盒阴影效果。filter属性的值可以是一个DXImageTransform.Microsoft.S…

    css 2023年6月11日
    00
  • 深入剖析从输入URL到页面显示过程原理

    下面我将详细讲解“深入剖析从输入URL到页面显示过程原理”的完整攻略。 1.域名解析(DNS解析) 当用户在浏览器中输入一个URL时,浏览器首先需要将URL中的域名解析为IP地址,从而定位到服务器。这个解析的过程叫做DNS解析。具体过程如下: 浏览器首先会检查浏览器缓存中是否保存了该域名的IP地址。 如果浏览器缓存中没有,那么浏览器会向本地DNS服务器发送一…

    css 2023年6月10日
    00
  • vue+element-ui+sortable.js实现表格拖拽功能

    下面是“vue+element-ui+sortable.js实现表格拖拽功能”的完整攻略: 需要使用的框架或插件 vue.js element-ui sortable.js 实现步骤 1. 安装依赖 npm install vue-element-ui sortablejs –save 2. 引入依赖 import Vue from ‘vue’ impor…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部