JavaScript设置元素Class的三种方法及浏览器兼容性分析
本文总结了JavaScript中设置元素class的三种常见方式:setAttribute('class')、setAttribute('className')以及直接赋值el.className。通过对比测试发现,IE6/7与其他现代浏览器(如IE8+、Firefox、Chrome等)在支持这两种setAttribute参数时存在显著差异,仅直接赋值className属性在所有浏览器中均能正常工作。
JavaScript设置元素Class的三种方法及浏览器兼容性分析
在JavaScript开发中,动态修改HTML元素的class属性是常见需求。以下是三种常用的实现方式及其代码示例。
<!DOCTYPE HTML>
<HTML>
<HEAD>
<meta charset="utf-8" />
<title>setAttribute('class', 'abc')</title>
<style type="text/css">
.abc {
background: red;
}
</style>
</HEAD>
<BODY>
<div id="d1">test div</div>
<script>
var div = document.getElementById('d1');
div.setAttribute("class", "abc");
</script>
</BODY>
</HTML> 方法一:使用setAttribute('class')
在IE6和IE7浏览器中,div的背景色不会显示为红色。
在IE8、IE9、IE10、Firefox、Safari、Chrome和Opera等浏览器中,div的背景色正常显示为红色。
结论:IE6和IE7浏览器不支持使用setAttribute('class', xxx)的方式来设置元素的class属性。
二、el.setAttribute('className', 'abc')
第二种方法涉及使用setAttribute并传入'className'作为参数,具体代码如下。
<!DOCTYPE HTML>
<HTML>
<HEAD>
<meta charset="utf-8" />
<title>setAttribute('className', 'abc')</title>
<style type="text/css">
.abc {
background: red;
}
</style>
</HEAD>
<BODY>
<div id="d1">test div</div>
<script>
var div = document.getElementById('d1');
div.setAttribute("className", "abc");
</script>
</BODY>
</HTML> 方法二:使用setAttribute('className')
在IE6和IE7浏览器中,div的背景色成功显示为红色。
在IE8、IE9、IE10、Firefox、Safari、Chrome和Opera等浏览器中,div的背景色不显示为红色。
结论:IE8、IE9、IE10、Firefox、Safari、Chrome和Opera浏览器不支持使用setAttribute('className', xxx)的方式来设置元素的class属性。
有趣的是,在使用setAttribute方法时,第一个参数分别使用'class'和'className'的情况,在IE6/7与IE8/9/10/Firefox/Safari/Chrome/Opera之间的表现恰好相反。
三、el.className = 'abc';
第三种方法是直接通过JavaScript属性赋值,代码如下。
<!DOCTYPE HTML>
<HTML>
<HEAD>
<meta charset="utf-8" />
<title>el.className = 'abc'</title>
<style type="text/css">
.abc {
background: red;
}
</style>
</HEAD>
<BODY>
<div id="d1">test div</div>
<script>
var div = document.getElementById('d1');
div.className = 'abc';
</script>
</BODY>
</HTML> 方法三:直接赋值el.className
该方法在所有主流浏览器中均能得到支持,兼容性最佳。
JS监听滚动事件:回到顶部按钮的显示与隐藏逻辑
2026-11-05 16:19:37
JavaScript怎么读写LocalStorage与SessionStorage
2026-11-05 15:40:11
anime.js 与 GSAP 对比:轻量级项目该怎么选择动画库
2026-11-05 11:24:55
flv.js 与 hls.js 在直播场景下的选型对比
2026-11-05 08:18:52
JavaScript能做什么?前端开发中的作用与应用场景解析
2026-11-04 23:17:54
