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日

相关文章

  • CSS图片响应式 垂直水平居中

    CSS图片响应式垂直水平居中是前端开发中常见的需求之一,下面将详细讲解实现的完整攻略。 1. 使用CSS的transform属性实现 使用CSS的Transform属性,可以轻松实现图片的水平垂直居中。具体步骤如下: 设置父容器为相对定位,子容器为绝对定位; 子容器的top和left属性设置为50%; 使用Transform属性的translate(-50%…

    css 2023年6月11日
    00
  • CSS学习之CSS网页制作的10个技巧

    CSS学习之CSS网页制作的10个技巧 CSS(Cascading Style Sheets,层叠样式表)是一种用来展示HTML(Hypertext Markup Language,超文本标记语言)或XML(Extensible Markup Language,可扩展标记语言)等文档样式的语言。在网页设计中,CSS起到控制网页整体外观与样式的作用,为美化、调…

    css 2023年6月9日
    00
  • button在IE6/7下的黑边去除方案

    针对IE6/7下的黑边问题,可以采取以下方案进行处理: 1.使用CSS hack方式解决在标签中添加属性“overflow:hidden;zoom:1;”,其中“zoom:1”是使IE6/7下的layout引擎生效,同时“overflow:hidden”是为了隐藏不需要显示的部分,从而达到去除黑边的效果。 示例1: <button style=&quo…

    css 2023年6月10日
    00
  • HTML5 Canvas 旋转风车绘制

    HTML5 Canvas 旋转风车绘制的完整攻略如下: 准备工作 在开始之前,我们需要以下准备工作: 一个 HTML 文件 一个用于绘制风车的 JavaScript 文件 一个用于引用 JavaScript 文件的 HTML 代码 HTML 文件 在 HTML 文件中,我们需要添加一个 canvas 元素来创建画布: <!DOCTYPE html&gt…

    css 2023年6月10日
    00
  • CSS圆角

    CSS圆角是一种常用的样式设计元素,可以给网页设计带来更加美观、优雅的效果。在CSS中,我们可以通过border-radius属性来实现圆角效果。下面是CSS圆角的完整攻略与代码示例。 1.基本语法 border-radius属性用于设置元素的圆角。可以设置四个圆角半径,分别对应左上角、右上角、右下角和左下角。也可以只设置两个值,分别对应水平方向和竖直方向的…

    Web开发基础 2023年3月30日
    00
  • CSS3实现苹果手机解锁的字体闪亮效果示例

    我们来讲一下“CSS3实现苹果手机解锁的字体闪亮效果”的攻略。 攻略 首先,我们需要了解闪亮效果的实现原理。苹果手机的解锁字体闪亮效果是通过设置文本的背景图实现的,而图案包含的是透明背景和字体描边。我们可以根据这个原理来实现闪亮效果。 步骤一:设置字体描边 在 CSS3 中,我们可以使用 text-shadow 属性来实现字体的描边。需要注意的是,这里设置的…

    css 2023年6月9日
    00
  • 关于遇到的浏览器兼容问题及应对方法(推荐)

    关于遇到的浏览器兼容问题及应对方法(推荐) 在开发网页过程中,经常会遇到浏览器兼容性问题,由于不同浏览器对网页渲染的支持和代码解析存在差异,造成了网页在不同浏览器上显示效果不同的问题。本文将会详细讲解的一些典型的浏览器兼容性问题及对应的解决方法。 1. CSS3 属性的兼容性问题 CSS3 的有些属性在低版本的浏览器中不被支持,造成网页的兼容性问题。下面是两…

    css 2023年6月10日
    00
  • CSS长度单位 px和pt的区别

    CSS长度单位 px 和 pt 是网页设计中常用的单位,它们用于指定元素的尺寸和位置。本文将详细讲解 px 和 pt 的区别,包括基本概念、使用方法、注意事项和示例说明。 1. 基本概念 px 和 pt 都是 CSS 中常用的长度单位,它们用于指定元素的尺寸和位置。其中,px 是像素单位,pt 是点单位。像素是屏幕上的最小显示单位,点是印刷中的最小显示单位。…

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