JavaScript设置元素Class的三种方法及浏览器兼容性分析

作者:页面旅途时间:2026-10-26 12:56:08浏览:533

本文总结了JavaScript中设置元素class的三种常见方式:setAttribute('class')、setAttribute('className')以及直接赋值el.className。通过对比测试发现,IE6/7与其他现代浏览器(如IE8+、Firefox、Chrome等)在支持这两种setAttribute参数时存在显著差异,仅直接赋值className属性在所有浏览器中均能正常工作。

一、el.setAttribute('class','abc');

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

该方法在所有主流浏览器中均能得到支持,兼容性最佳。

作者最新文章