如何用javascript为元素添加class?

如何用javascript为元素添加class?,第1张

以给 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

如下示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "

<html xmlns="

<head>

<meta http-equiv="Content-Type" content="text/html charset=utf-8" />

<title>Demo</title>

</head>

<style type="text/css">

a{text-decoration: none}

.class-name{border: 1px solid #CCCCCCbackground: #FFA54F-webkit-border-radius: 5px-moz-border-radius: 5pxkhtml-border-radius: 5pxborder-radius: 5pxpadding: 5px 10pxwidth: 100pxtext-align: center}

</style>

<body>

    <div id="main">

        <a href="javascript:" onclick="add_class()">添加Class</a>

    </div>

<script language="javascript" type="text/javascript">

    function add_class(){

        document.getElementById('main').className = 'class-name'

    }

</script>

</body>

</html>

测试效果如下:

添加class前

添加class后

与jQuery的addClass同一效果的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11635939.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存