当前位置:首页 > JavaScript

js 多选 实现

2026-04-03 22:58:05JavaScript

实现多选功能的方法

使用 JavaScript 实现多选功能通常涉及监听用户操作(如点击或键盘事件),并动态更新选中状态。以下是几种常见的实现方式:

基于复选框的多选 通过复选框(<input type="checkbox">)实现多选是最直接的方式。通过遍历复选框组,获取选中的值:

js 多选 实现

// 获取所有复选框
const checkboxes = document.querySelectorAll('input[type="checkbox"]');

// 监听复选框变化
checkboxes.forEach(checkbox => {
  checkbox.addEventListener('change', function() {
    if (this.checked) {
      console.log('选中:', this.value);
    }
  });
});

基于列表项的多选 通过点击列表项切换选中状态,通常配合 CSS 高亮显示选中项:

const items = document.querySelectorAll('.selectable-item');

items.forEach(item => {
  item.addEventListener('click', function() {
    this.classList.toggle('selected'); // 切换选中样式
  });
});

配合键盘的多选(Shift 多选) 允许用户通过按住 Shift 键进行范围多选:

js 多选 实现

let lastSelectedIndex = -1;

document.querySelectorAll('.item').forEach((item, index) => {
  item.addEventListener('click', function(e) {
    if (e.shiftKey && lastSelectedIndex !== -1) {
      // 处理范围选择逻辑
      const start = Math.min(index, lastSelectedIndex);
      const end = Math.max(index, lastSelectedIndex);
      for (let i = start; i <= end; i++) {
        items[i].classList.add('selected');
      }
    }
    lastSelectedIndex = index;
  });
});

状态管理与数据绑定

将选中状态与数据模型绑定,便于后续操作:

const selectedItems = [];

document.querySelectorAll('.item').forEach(item => {
  item.addEventListener('click', function() {
    const itemId = this.dataset.id;
    const index = selectedItems.indexOf(itemId);

    if (index === -1) {
      selectedItems.push(itemId); // 添加选中项
    } else {
      selectedItems.splice(index, 1); // 移除选中项
    }
    console.log('当前选中:', selectedItems);
  });
});

全选/反选功能

添加全选或反选按钮提升操作效率:

document.getElementById('select-all').addEventListener('click', function() {
  const checkboxes = document.querySelectorAll('input[type="checkbox"]');
  checkboxes.forEach(checkbox => {
    checkbox.checked = true;
  });
});

注意事项

  • 性能优化:对于大量选项,建议使用事件委托而非逐个绑定事件。
  • 无障碍支持:确保键盘操作(如 Space/Enter)可触发多选,并添加 ARIA 属性。
  • 移动端适配:考虑长按或拖拽等多选交互方式。

标签: 多选js
分享给朋友:

相关文章

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…