当前位置:首页 > JavaScript

js实现选中效果

2026-04-04 01:14:40JavaScript

实现选中效果的方法

使用CSS类切换

通过JavaScript动态添加或移除CSS类来实现选中效果。定义一个高亮样式类,通过事件监听切换类名。

document.querySelectorAll('.item').forEach(item => {
  item.addEventListener('click', function() {
    this.classList.toggle('selected');
  });
});

对应CSS样式:

.selected {
  background-color: #4CAF50;
  color: white;
}

直接修改style属性

通过JavaScript直接修改元素的style属性实现即时样式变化。

js实现选中效果

const elements = document.querySelectorAll('.selectable');
elements.forEach(el => {
  el.addEventListener('click', () => {
    el.style.backgroundColor = '#2196F3';
    el.style.color = '#fff';
  });
});

表单元素选中状态

针对radio或checkbox类型输入元素,使用checked属性控制选中状态。

const radios = document.querySelectorAll('input[type="radio"]');
radios.forEach(radio => {
  radio.addEventListener('change', function() {
    if(this.checked) {
      console.log('Selected value:', this.value);
    }
  });
});

数据驱动选中状态

结合数据模型实现选中状态管理,适用于复杂交互场景。

js实现选中效果

const items = [
  { id: 1, selected: false },
  { id: 2, selected: false }
];

function renderItems() {
  const container = document.getElementById('item-container');
  container.innerHTML = items.map(item => `
    <div class="item ${item.selected ? 'selected' : ''}" 
         data-id="${item.id}">
      Item ${item.id}
    </div>
  `).join('');

  document.querySelectorAll('.item').forEach(el => {
    el.addEventListener('click', () => {
      const id = parseInt(el.dataset.id);
      items.forEach(item => {
        item.selected = item.id === id;
      });
      renderItems();
    });
  });
}

多选与单选模式

根据需求实现不同选择模式的控制逻辑。

// 单选模式
function setupSingleSelect() {
  let currentSelected = null;

  document.querySelectorAll('.selectable').forEach(el => {
    el.addEventListener('click', () => {
      if(currentSelected) {
        currentSelected.classList.remove('selected');
      }
      el.classList.add('selected');
      currentSelected = el;
    });
  });
}

// 多选模式
function setupMultiSelect() {
  document.querySelectorAll('.selectable').forEach(el => {
    el.addEventListener('click', () => {
      el.classList.toggle('selected');
    });
  });
}

无障碍访问优化

为选中效果添加ARIA属性,提升可访问性。

document.querySelectorAll('[role="option"]').forEach(option => {
  option.addEventListener('click', () => {
    const isSelected = option.getAttribute('aria-selected') === 'true';
    option.setAttribute('aria-selected', !isSelected);
    option.classList.toggle('selected');
  });
});

标签: 效果js
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…