导读:本期聚焦于小伙伴创作的《JavaScript如何根据属性值查找元素并修改其类名》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《JavaScript如何根据属性值查找元素并修改其类名》有用,将其分享出去将是对创作者最好的鼓励。

在前端页面开发过程中,我们常常需要根据元素的某个属性值来定位目标元素,然后对其类名进行修改,从而实现样式切换或者功能标记的效果。下面介绍几种常用的实现方式。

JavaScript如何根据属性值查找元素并修改其类名

方法一:使用属性选择器直接查找

如果元素的属性值是明确的,我们可以直接使用CSS属性选择器配合querySelector或者querySelectorAll方法来查找元素,之后修改类名。

假设页面中有如下结构的元素:

<div data-type="active" class="item">元素1</div>
<div data-type="normal" class="item">元素2</div>
<div data-type="active" class="item">元素3</div>

我们要查找所有data-type属性值为active的元素,为其添加highlight类名,代码如下:

// 查找所有data-type为active的元素
const targetElements = document.querySelectorAll('[data-type="active"]');
// 遍历元素修改类名
targetElements.forEach(element => {
    element.classList.add('highlight');
});

方法二:遍历元素集合匹配属性值

当属性值需要动态判断,或者属性选择器的匹配规则无法满足需求时,我们可以先获取所有同类元素,再遍历每个元素获取属性值进行判断,最后修改类名。

还是以上面的HTML结构为例,查找data-typeactive的元素修改类名:

// 获取所有class为item的元素
const allItems = document.getElementsByClassName('item');
// 遍历元素
for (let i = 0; i < allItems.length; i++) {
    const currentElement = allItems[i];
    // 获取data-type属性值
    const dataType = currentElement.getAttribute('data-type');
    // 判断属性值是否符合条件
    if (dataType === 'active') {
        // 修改类名,添加highlight,移除normal
        currentElement.classList.add('highlight');
        currentElement.classList.remove('normal');
    }
}

方法三:使用find方法查找单个元素

如果只需要查找第一个符合条件的元素,可以结合Array.from将元素集合转为数组,再使用find方法查找。

// 获取所有item元素转为数组
const itemArray = Array.from(document.getElementsByClassName('item'));
// 查找第一个data-type为active的元素
const firstActiveElement = itemArray.find(element => {
    return element.getAttribute('data-type') === 'active';
});
if (firstActiveElement) {
    // 修改类名
    firstActiveElement.classList.add('highlight');
}

不同方法的适用场景对比

我们可以通过下面的表格了解不同方法的适用场景:

方法适用场景性能表现
属性选择器查找属性值固定,需要批量查找符合条件的元素较高,由浏览器原生支持选择器匹配
遍历元素匹配属性值需要动态判断,或者匹配规则复杂中等,需要遍历元素并逐个判断
find方法查找单个只需要查找第一个符合条件的元素中等,需要转换数组再查找

注意事项

  • 使用getAttribute获取不存在的属性时,会返回null,判断时需要做好兼容处理,避免出现运行时错误。
  • classListadd方法如果添加已经存在的类名,不会重复添加,无需提前判断类名是否存在。
  • 如果属性值是动态的,需要注意属性值中的特殊字符,避免属性选择器匹配出错,此时优先选择遍历匹配的方式。

JavaScriptgetAttributequerySelectorclassList属性选择器修改时间:2026-07-06 08:51:13

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。