当前位置:首页 > JavaScript

js实现反选

2026-04-04 01:57:15JavaScript

实现反选功能

在JavaScript中实现反选功能通常涉及对一组元素(如复选框)的状态进行反转操作。以下是几种常见的实现方式:

js实现反选

基于DOM操作的反选

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

// 反选逻辑
function toggleSelectAll() {
  checkboxes.forEach(checkbox => {
    checkbox.checked = !checkbox.checked;
  });
}

配合全选按钮的实现

<input type="checkbox" id="selectAll" onclick="toggleAll()">
<label for="selectAll">全选/反选</label>

<script>
function toggleAll() {
  const masterCheckbox = document.getElementById('selectAll');
  const checkboxes = document.querySelectorAll('input[type="checkbox"]:not(#selectAll)');

  checkboxes.forEach(checkbox => {
    checkbox.checked = masterCheckbox.checked;
  });
}
</script>

使用事件委托的反选

对于动态生成的元素,可以使用事件委托:

js实现反选

document.addEventListener('click', function(e) {
  if (e.target.id === 'invertSelection') {
    const checkboxes = document.querySelectorAll('.item-checkbox');
    checkboxes.forEach(checkbox => {
      checkbox.checked = !checkbox.checked;
    });
  }
});

配合数据绑定的实现(Vue示例)

new Vue({
  el: '#app',
  data: {
    items: [
      { id: 1, selected: false },
      { id: 2, selected: true }
    ]
  },
  methods: {
    invertSelection() {
      this.items.forEach(item => {
        item.selected = !item.selected;
      });
    }
  }
});

配合React的实现

function CheckboxList() {
  const [items, setItems] = useState([
    { id: 1, checked: false },
    { id: 2, checked: true }
  ]);

  const invertSelection = () => {
    setItems(items.map(item => ({
      ...item,
      checked: !item.checked
    })));
  };

  return (
    <div>
      <button onClick={invertSelection}>反选</button>
      {items.map(item => (
        <input 
          key={item.id}
          type="checkbox"
          checked={item.checked}
          onChange={() => {}}
        />
      ))}
    </div>
  );
}

性能优化建议

对于大量元素的场景,可以考虑以下优化:

  • 使用文档片段(documentFragment)批量操作DOM
  • 对可见区域外的元素使用虚拟滚动技术
  • 避免在循环中直接操作DOM,先处理数据再批量更新

这些方法涵盖了从原生JavaScript到现代前端框架的反选实现,可以根据具体项目需求选择适合的方案。

标签: js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选框 co…