如何用js动态设置class属性

JavaScript04

如何用js动态设置class属性,第1张

1、JavaScript允许你更改元素的class或id。当你更改之后,浏览器会自动更新元素的样式。

2、是className,可不是class

注意:JavaScript使用的是className去访问class属性,因为class是一个保留关键字,因为将来JavaScript可能开始支持像Java一样的类。

以给 body 标签添加 class 为例

通过 jQuery

$( 'body').addClass( 'class1 class2' )

$( 'body' ).removeClass( 'class1 class2' )

支持 classList 的高级浏览器(IE10+,Chrome,Firefox,Safari)

document.body.classList.add( 'class1', 'class2' )

document.body.classList.remove( 'class1', 'class2' )

不支持 classList 的浏览器只能通过 className 来添加

document.body.className += ' cl

[1]直接把样式赋值给className

var odiv=document.getElementById('div1')

odiv.className= div3

//这样我们会得到 class ="div3" 会直接把div2样式给覆盖掉

[2]使用累加赋值给className

var odiv=document.getElementById('div1')

odiv.className+=" "+div3  //样式和样式之间需要空隙 ,所以加个空字符串隔开

//这样可以得到 class="div2 div3" 可以正常增加,但是我们在添加样式的时候我们得考虑下他本身之前有没有同名的样式,如果有我们添加的话就会变成累赘 比如class="div2 div3 div3"

[3]检测样式原先之前是否有相同的样式

var odiv=document.getElementById('div1') 

function hasClass(element,csName){

element.className.match(RegExp('(\\s|^)'+csName+'(\\s|$)'))//使用正则检测是否有相同的样式

}

[4]在[3]的基础上我们就可以进行判断性给元素添加样式了 

var odiv=document.getElementById('div1') 

function hasClass(element,csName){

return  element.className.match(RegExp('(\\s|^)'+csName+'(\\s|$)'))//使用正则检测是否有相同的样式

} 

function addClass(element,csName){

if(!hasClass(element,csName)){

element.className+=' '+csName

js通过class改变样式,可以使用Dom的className属性设置元素的样式。完整示例代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>测试页面</title>

<style type="text/css">

.themeCls {

color: #000

background-color: #f60

line-height: 25px

}

</style>

</head>

<body style="background-color:#ccc">

<span id="theme">这是一段测试文本<br />用来测试js通过class改变样式</span>

<script type="text/javascript">

var domTheme = document.getElementById("theme")

theme.className = "themeCls"

</script>

</body>

</html>

具体操作步骤如下:

1、新建一个html文件,命名为t.html。

2、打开t.html。

3、在t.html中写入html结构代码,其中设置需要添加class类的元素的ID为“theme”。代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>测试页面</title>

</head>

<body style="background-color:#ccc">

<span id="theme">这是一段测试文本<br />用来测试js通过class改变样式</span>

</body>

</html>

4、设置一个css类,命名为”themeCls”,用于在javascript操作时给元素添加clsss。”themeCls”类为了方便观察效果,设置css规则为字体颜色为黑色#000,背景为橙色#f60,行高为25像素。代码如下:

<style type="text/css">

.themeCls {

color: #000

background-color: #f60

line-height: 25px

}

</style>

5、编写javascript代码,获取ID为“theme”的元素并设置元素的class类为“themeCls”,代码如下:

<script type="text/javascript">

var domTheme = document.getElementById("theme")

domTheme .className = "themeCls"

</script>

6、打开浏览器,浏览t.html页面,发现页面中”这是一段测试文本用来测试js通过class改变样式”这一段文本字体颜色呈现黑色,背景呈现橙色,说明我们为元素添加class类“themeCls”成功了。