当前位置:首页 > 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
分享给朋友:

相关文章

vue实现放大效果

vue实现放大效果

使用 CSS 过渡实现放大效果 通过 Vue 的 v-bind:class 或 v-bind:style 动态绑定 CSS 类或样式,结合 CSS 的 transform: scale() 实现平滑过…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

vue实现效果

vue实现效果

Vue 实现常见效果的方法 数据绑定与响应式更新 Vue 的核心特性是数据绑定,通过 v-model 实现表单元素与数据的双向绑定。例如输入框与数据的实时同步: <input v-model=…

js实现图表

js实现图表

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

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…