-
33 class属性主要用于指向样式表中的类。但是,JavaScript也可以使用它(通过HTML DOM)更改具有指定类的HTML元素- w3schools.com/tags/att_standard_class.asp网站 – 特里因科 评论 2011年4月7日18:11 -
25 element.setAttribute(名称、值); 更换 名称 具有 班 .更换 价值 不管你给这个类起什么名字,都要用引号括起来。 这避免了删除当前类和添加其他类的需要。 这个 jsFiddle示例 显示完整的工作代码。 – 艾伦·韦尔斯 评论 2014年5月18日4:59 -
5 要使用onClick更改HTML元素类,请使用以下代码: <input type='button'onclick='addNewClass(this)'value='Create'/> 在javascript部分中: 函数addNewClass(elem){elem.className=“newClass”; } 在线的 – 伊曼·巴赫拉普尔 评论 2017年8月22日4:13 -
@Triynko——w3schools上的链接已经改变,看起来像是在2012年9月。 这是2012年9月12日Archive.org上的页面: HTML类Attribute-w3schools 。以下是w3schools.com上替换页面的链接: HTML类Attribute-w3schools . – 凯文·费根 评论 2018年10月12日17:46 -
@ImanBahrampour这将抹杀任何现有的类。 – Teepemm公司 评论 2021年9月17日2:53
34个答案
用于改变类的现代HTML5技术
document.getElementById(“MyElement”).classList.add(“MyClass”); document.getElementById(“MyElement”).classList.remove(“MyClass”); if(document.getElementById(“MyElement”).classList.contents(“MyClass”)) document.getElementById(“MyElement”).classList.togle(“MyClass”);
简单的跨浏览器解决方案
要更改元素的所有类,请执行以下操作:
document.getElementById(“MyElement”).className=“MyClass”;
要向元素添加附加类,请执行以下操作:
document.getElementById(“MyElement”).className+=“MyClass”;
要从元素中删除类,请执行以下操作:
document.getElementById(“MyElement”).className= document.getElementById(“MyElement”).className.replace (/(?:^|\s)我的类(?!\s)/g,'') /*为了可读性而包装的代码-以上都是一个语句*/
(?:^|\s)#匹配字符串的开头或任何单个空白字符 MyClass#要删除的类名的文本 (?!\S)#反向向前看,以验证以上是整个类名 #确保后面没有非空格字符 #(即必须是字符串或空格的末尾)
要检查类是否已应用于元素,请执行以下操作:
if(document.getElementById(“MyElement”).className.match(/(?:^|\s)MyClass(?!\s)/))
将这些操作分配给onClick事件:
<script type=“text/javascript”> 函数changeClass(){ //上面的代码示例 } </script> ... <button onClick=“changeClass()”>我的按钮
<script type=“text/javascript”> 函数changeClass(){ //上面的代码示例 } window.onload=函数(){ document.getElementById(“MyElement”).addEventListener('click',changeClass); } </script> ... 我的按钮
JavaScript框架和库
使用jQuery更改类:
$('#MyElement').addClass('MyClass'); $('#MyElement').removeClass('MyClass'); if($('#MyElement').hasClass('MyClass'))
$('#MyElement').toggleClass('MyClass');
$(“#MyElement”)点击(changeClass);
$(':button:contains(My button)')点击(changeClass);
-
122 回答得好,彼得。 有一个问题。。。 为什么会这样 更好的 使用JQuery而不是Javascript? JQuery很好,但如果这就是您需要做的所有事情,那么有什么理由包括整个JQuery库而不是几行JavaScript? – 马特斯特勒 评论 2011年5月15日15:32 -
25 @马特施特勒(mattstuehler)短语“更好的x” 经常 意思是“你能做得更好”。 2) 为了深入了解问题的核心,jQuery旨在帮助访问/操作DOM,如果您需要在各地执行这类操作,通常也会这样做。 – 巴里 评论 2011年5月24日16:46 -
33 这个解决方案的一个错误是:当您多次单击按钮时,它会多次将“MyClass”类添加到元素中,而不是检查它是否已经存在。 因此,您可能最终得到如下所示的HTML类属性: class=“button MyClass MyClass我的类MyClass” 评论 2011年9月13日16:28 -
38 如果你试图删除一个类“myClass”,并且你有一个类”prefix-myClass“,那么你在上面给出的删除类的正则表达式会在你的className:O中留下”prefix-“ – 叮当作响 评论 2011年9月15日5:26 -
19 哇,三年183张赞成票,到目前为止还没有人发现。 谢谢jinglesthula,我已经更正了regex,这样它就不会错误地删除部分类名。// 我想这是一个很好的例子,说明了为什么框架(如jQuery)值得使用——像这样的错误很快就会被捕获并修复,并且不需要更改普通代码。 – 彼得·布顿 评论 2011年9月15日17:09
document.getElementById('id').classList.add('class'); document.getElementById('id').classList.remove('class');
document.getElementById('id').classList.togle('class');
-
70 -
13 -
16 Mozilla开发者网络 声明它在10岁以下的InternetExplorers中无法正常工作。 在我的测试中,我发现这个说法是正确的。 显然 Eli Grey垫片 是Internet Explorer 8-9所必需的。 不幸的是,我在他的网站上找不到它(即使是搜索)。 该填充程序可在Mozilla链接上找到。 – 双J 评论 2012年10月29日4:13 -
2 -
5 atow“classList”在IE10+中有部分支持; 不支持Opera Mini; 其他标准浏览器完全支持: caniuse.com/#search=类列表 – 尼克·汉弗莱 评论 2015年7月29日8:47
函数hasClass(ele,cls){ return ele.className.match(新RegExp('(\\s|^)'+cls+'(\\s |$)'); } 函数addClass(ele,cls){ if(!hasClass(ele,cls)) ele.className+=“”+cls; } 函数删除类(ele,cls){ if(hasClass(ele,cls)){ var reg=新RegExp('(\\s|^)'+cls+'(\\s |$)'); ele.className=ele.class名称.replace(reg,''); } }
<script type=“text/javascript”> 函数changeClass(btn,cls){ if(!hasClass(btn,cls)){ addClass(btn,cls); } } </script> ... 我的按钮
-
10 -
2 -
6 @kfrncs因为我通常不需要那么大的框架。对于我正在考虑的项目,我只需要3个classname(has,add,remove)函数和cookie(has、add,remove)函数。 其他一切要么是习惯性的,要么是天生就得到很好的支持。 所以在缩小之前,所有内容加起来只有150行,包括评论。 – 迈克 评论 2013年11月18日19:17 -
-
应注意,使用后 addClass(添加类) 和 删除类 在同一个元素上,元素的className将包含一个额外的空格。 的className修改行 删除类 应更新为 ele.className=ele.class名称.replace(reg,'').trim().replate(/\s{2,}/g,'',); 。这将删除遗留的尾部空白,并将className中的多个空白折叠为一个空格。 – 网络漫游者 评论 2017年10月17日21:45
document.getElementById('fo').className='bar';
函数hasClass(ele,cls){ return ele.className.match(新RegExp('(\\s|^)'+cls+'(\\s |$)'); } 函数addClass(ele,cls){ if(!this.hasClass(ele,cls))ele.className+=“”+cls; } 函数删除类(ele,cls){ if(hasClass(ele,cls)){ var reg=新RegExp('(\\s|^)'+cls+'(\\s |$)'); ele.className=ele.class名称.replace(reg,''); } } 函数replaceClass(ele,oldClass,newClass){ if(hasClass(ele,oldClass)){ removeClass(ele,oldClass); addClass(ele,newClass); } 回报; } 函数toggleClass(ele、cls1、cls2){ if(hasClass(ele,cls1)){ 替换类(ele,cls1,cls2); }else if(hasClass(ele,cls2)){ 替换类(ele,cls2,cls1); }其他{ 添加类别(ele,cls1); } }
<div class=“firstClass”onclick=“this.className='secondClass'”>
-
15 -
25 -
1 -
5
4种可能的操作:添加、删除、检查和切换
1.添加类
案例1 :添加单个类 函数addClass(){ let元素=document.getElementById('id1'); //添加类 element.classList.add('beautify'); } 案例2 :添加多个类 要添加多个类,请在 添加() 方法 函数addClass(){ let元素=document.getElementById('id1'); //添加多个类 element.classList.add('class1','class2','class3'); }
案例1 :覆盖预先存在的类 将新类分配给 类名 属性覆盖上一个类。 函数addClass(){ let元素=document.getElementById('id1'); //添加多个类 element.className=“美化”; } 案例2 :添加类而不覆盖 使用 += 操作符用于类不覆盖以前的类。 另外,在新类之前添加一个额外的空格。 函数addClass(){ let元素=document.getElementById('id1'); //添加单个多个类 element.className+=“美化”; //添加多个类 element.className+=“class1 class2 class3”; }
2.删除类
案例1 :删除单个类 只需传递要从方法中的元素中移除的类名。 函数removeClass(){ let元素=document.getElementById('id1'); //删除类 element.classList.remove('beautify'); } 案例2 :删除多个类 传递由逗号分隔的多个类。 函数removeClass(){ let元素=document.getElementById('id1'); //删除类 element.classList.remove('class1','class2','classis3'); }
案例1 :删除单个类 如果元素只有1个类,并且您想删除它,那么只需将一个空字符串分配给 类名 方法。 函数removeClass(){ let元素=document.getElementById('id1'); //删除类 element.className=“”; } 案例2 :删除多个类 如果元素有多个类,则首先使用 类名 属性并使用replace方法,用空字符串替换所需的类,最后将其分配给元素的 类名 财产。 函数removeClass(){ let元素=document.getElementById('id1'); //删除类 element.className=元素.className.replace('class1',''); }
3.检查等级
函数checkClass(){ let元素=document.getElementById('id1'); //检查类 if(element.classList.contains('beautify'){ alert(“是!类存在”); } }
4.切换类
函数toggleClass(){ let元素=document.getElementById('id1'); //切换类 element.classList.togle('beautify'); }
函数集CSS(elemID){ var currTabElem=文档.getElementById(元素ID); currTabElem.setAttribute(“类”,“some_class_name”); currTabElem.setAttribute(“类名称”,“some_class_name”); }
-
-
-
三 你可以使用 el.setAttribute('class',newClass) 或更好 el.className=新类 .但不是 el.setAttribute('className',newClass) . – 奥里奥尔 评论 2015年2月11日15:54
HTMLElement=类型(HTMLElement)!=' 没有定义? HTMLElement:元素; HTMLElement.prototype.addClass=函数(字符串){ if(!(数组的字符串实例)){ string=string.split(''); } 对于(var i=0,len=字符串长度;i<len;++i){ if(string[i]&&!new RegExp('(\\s+|^)'+string[i]+'(\\s+|$)').test(this.className)){ this.className=this.classesName.trim()+“”+字符串[i]; } } } HTMLElement.prototype.removeClass=函数(字符串){ if(!(数组的字符串实例)){ string=string.split(''); } 对于(var i=0,len=字符串长度;i<len;++i){ this.className=this.classeName.replace(新RegExp('(\\s+|^)'+string[i]+'(\\s+|$)'),').trim(); } } HTMLElement.prototype.toggleClass=函数(字符串){ if(字符串){ if(新RegExp('(\\s+|^)'+string+'(\\s+|$)').test(this.className)){ this.className=this.classeName.replace(新RegExp('(\\s+|^)'+string+'(\\s+|$)'),').trim(); }其他{ this.className=this.classesName.trim()+“”+字符串; } } } HTMLElement.prototype.hasClass=函数(字符串){ 返回字符串&&new RegExp('(\\s+|^)'+string+'(\\s+|$)').test(this.className); }
document.getElementById('yourElementId').onclick=function(){ this.toggleClass('active'); }
goog.dom.classes.add(元素,var_args) goog.dom.classes.addRemove(元素,类ToRemove,类ToAdd) goog.dom.classes.remove(元素,var_args)
var myElement=goog.dom.query(“#myElement”)[0];
受保护的子页面加载(ByVal sender As Object,ByVal e As System.EventArgs)处理Me.Load 如果不是第页。 IsPostBack然后 lbSave(保存)。 属性。 添加(“onmouseover”,“this.className='LinkButtonStyle1'”) lbSave(保存)。 属性。 添加(“onmouseout”,“this.className='LinkButtonStyle'”) lb取消。 属性。 添加(“onmouseover”,“this.className='LinkButtonStyle1'”) lb取消。 属性。 添加(“onmouseout”,“this.className='LinkButtonStyle'”) End If(结束条件) 结束Sub
var s=“testing one four one two”; var cls=“一”; var rg=新RegExp(“(^|\\s+)”+cls+“(\\s+|$)”,'ig'); 警报(“[”+s.replace(rg,'')+“]”); var cls=“测试”; var rg=新RegExp(“(^|\\s+)”+cls+“(\\s+|$)”,'ig'); 警报(“[”+s.replace(rg,'')+“]”); var cls=“测试”; var rg=新RegExp(“(^|\\s+)”+cls+“(\\s+|$)”,'ig'); 警报(“[”+s.replace(rg,'')+“]”); var cls=“tWo”; var rg=新RegExp(“(^|\\s+)”+cls+“(\\s+|$)”,'ig'); 警报(“[”+s.replace(rg,'')+“]”);
document.getElementById(“MyElement”).className=document.getElementById(“MyElement”).className.replace(/\bMyClass\b/','')
document.getElementById(“MyElement”).className=document.getElementById(“MyElement”).className.replace('/\bMyClass\b/','');
jQuery(函数($){ $(“#some-element”)点击(function(){ $(this).toggleClass(“点击”); }); });
-
9
在支持Internet Explorer 6的普通JavaScript中更改元素的类
函数getClassNode(元素){ for(var i=元素属性长度;i--;) if(element.attributes[i].nodeName==='class') return element.attributes[i]; } 函数removeClass(classNode,className){ var index,classList=classNode.value.split(''); if((index=classList.indexOf(className))>-1){ classList.拼接(索引,1); classNode.value=classList.join(“”); } } 函数hasClass(classNode,className){ return classNode.value.indexOf(className)>-1; } 函数addClass(classNode,className){ if(!hasClass(classNode,className)) classNode.value+=“”+类名称; } document.getElementById('message').addEventListener('click',function(){ var classNode=获取类节点(this); var className=hasClass(classNode,'red')&&'blue'||'red'; removeClass(classNode,'red'); removeClass(classNode,'blue'); addClass(classNode,className); })
.红色{ 颜色:红色; } .红色:之前{ content:“我是红色的!”; } .红色:之后{ content:'再次'; } .蓝色{ 颜色:蓝色; } .蓝色:之前{ 内容:“我是蓝色的!” }
单击我</span>
函数addHTMLClass(item,classname){ var obj=项目 if(项目类型=“字符串”){ obj=文档.getElementById(项) } obj.className+=“”+类名 } 函数removeHTMLClass(item,classname){ var obj=项目 if(项目类型==“字符串”){ obj=文档.getElementById(项) } var classes=“”+对象.className while(classes.indexOf(classname)>-1){ classes=classes.replace(类名,“”) } obj.className=类 }
<tr onmouseover='addHTMLClass(this,“clsSelected”)' onmouseout='removeHTMLClass(this,“clsSelected”)'>
//如果提供newState,则相应地添加/删除Class,否则切换Class 函数toggleClass(elem,theClass,newState){ var matchRegExp=新RegExp('(?:^|\\s)'+theClass+'(?!\\s)','g'); var add=(arguments.length>2?newState:(elem.className.match(matchRegExp)==null)); elem.className=elem.classesName.replace(matchRegExp,'');// 全部清除 if(add)elem.className+=“”+类; }
函数addClass(el,cn){ var c0=(“”+el.className+“”).replace(/\s+/g,“”), c1=(“”+cn+“”).替换(/\s+/g,“”); 如果(c0.indexOf(c1)<0){ el.className=(c0+c1).replace(/\s+/g,“”).replay(/^|$/g,“”; } } 函数delClass(el,cn){ var c0=(“”+el.className+“”).replace(/\s+/g,“”), c1=(“”+cn+“”).替换(/\s+/g,“”); 如果(c0.indexOf(c1)>=0){ el.className=c0.replace(c1,“”).replace(/\s+/g,“”; } }
选项。
风格
与。 类列表
样式示例
//获取元素 const el=document.querySelector(“#element”); //添加CSS属性 el.style.margintop=“0px” el.style.margintop=“25px”//这将在元素顶部添加一个25px。
classList示例
删除 乙类放大
//获取元素 const el=document.querySelector(“#element”); //从元素中删除class-b样式 el.classList.remove(“class-b”)
添加 c类
//获取元素 const el=document.querySelector(“#element”); //从元素添加class-b样式 el.classList.add(“class-c”)
element.className=“秒”
函数更改(box){box.className='second'}
.first{宽度:70px;高度:70px;背景:#ff0} 第二个{宽度:150px;高度:150px;背景:#f00;过渡:1s}
单击我
var elem=文档.getElementById('some-id'); //不要忘记类名前的额外空格 var classList=elem.getAttribute('class')+'other-class-name'; elem.setAttribute('class',classList);
//用于ES6中类管理的简单JavaScript实用程序 var类实用程序={ addClass:(id,cl)=>{ document.getElementById(id).classList.add(cl); }, 删除类:(id,cl)=>{ document.getElementById(id).classList.remove(cl); }, hasClass:(id,cl)=>{ return document.getElementById(id).classList.contains(cl); }, toggleClass:(id,cl)=>{ document.getElementById(id).classList.togle(cl); } }
classUtil.addClass('myId','myClass'); classUtil.removeClass('myId','myClass'); classUtil.hasClass('myId','myClass'); classUtil.toggleClass('myId','myClass');
类列表
DOM API:
const el=document.getElementById(“main”); console.log(el.classList);
<div class=“content-wrapper animated”id=“main”></div>
例子:
const el=document.getElementById(“容器”); 函数addClass(){ el.classList.add('newclass'); } 函数replaceClass(){ el.classList.replace('foo','newFoo'); } 函数removeClass(){ el.classList.remove('bar'); }
按钮{ 边距:20px; } .foo文件{ 颜色:红色; } .newFoo(新Foo){ 颜色:蓝色; } .巴{ 背景色:粉末蓝; } .newclass(新类){ 边框:2px纯绿色; }
<div class=“foo bar”id=“container”> “全身出汗 iste natus error sit volutitem accusantium doloremque audantium, 托塔姆·雷姆·阿皮里亚姆(totam rem aperiam)、埃克·伊萨·奎阿比略(eaque ipsa quae ab illo inventore veritatis)等 准建筑师beatae vitae dicte sunt explicabo。 尼莫·埃尼姆·伊萨姆 卷目的要求卷 </div> 添加类 替换类 <button onclick=“removeClass()”>removeClass</button>
const tabs=document.querySelectorAll('.menu li'); for(让选项卡中的选项卡){ tab.onclick=函数(){ let activetab=document.querySelectorAll('li.active'); activetab[0].classList.remove('active') tab.classList.add('active'); } }
车身{ 填充:20px; font-family:无衬线; } ul公司{ 边距:20px 0; 列表样式:无; } 李{ 背景:#dfdfdf; 填充:10px; 边距:6px 0; 光标:指针; } li.活动{ 背景:#2794c7; font-weight:粗体; 颜色:#ffffff; }
<i> 请单击项目:</i> <ul class=“menu”> <li class=“active”><span>三个</span></li> <li><span>两个</span></li> <li>一个</li> </ul>
-
你的意思是什么 “使用此代码切换添加和删除类。” ? 这似乎令人费解。 例如,是否缺少一些标点符号? 请回复 编辑(更改)您的答案 ,不在评论中( 没有 “编辑:”、“更新:”或类似内容-答案应该像今天写的一样出现)。 – 彼得·莫特森 评论 2021年8月20日15:53
数组中的函数(val,ary){ 对于(var i=0,l=ary.length;i<l;i++){ if(ary[i]===val){ 返回true; } } 返回false; } 函数removeClassName(classNameS,fromElement){ var x=classNameS.split(/\s/),s=fromElement.className.split(/\s/),r=[]; 对于(var i=0,l=s.长度;i<l;i++){ 如果(!iA(s[i],x))r.push(s[i]); } fromElement.className=r.join(“”); } 函数addClassName(classNameS,toElement){ var s=toElement.className.split(/\s/); s.push(c); toElement.className=s.join(''); }
var doc=文档; var divOne=doc.getElementById(“一个”); var goButton=doc.getElementById(“go”); goButton.addEventListener(“点击”,函数(){ divOne.classList=“蓝色”; });
div公司{ 最小高度:48px; 最小宽度:48px; } .有边框{ 边框:1px纯黑色; } .绿色{ 背景:绿色; } .蓝色{ 背景:蓝色; }
<button id=“go”>更改类别 <div id=“one”class=“bordered green”> </div>
函数classed(el,class_name,add_class){ const re=新RegExp(“(?:^|\\s)”+类名称+“(?!\\s)”,“g”); if(add_class&&!el.className.match(re))el.class名称+=“”+类名称 else if(!add_class)el.className=el.class Name.replace(re,''); }
classed(document.getElementById(“denis”),“active”,true)
classed(document.getElementById(“denis”),“active”,false)
<! DOCTYPE html> <html> <头部> <title>如何在JavaScript中更改HTML元素的类</ 标题> <link rel=“stylesheet”href=“ https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css "> </头> <body> <h1 align=“center”><i class=“fa fa-home”id=“icon”></i></h1><br/> <center><button id=“change-class”>更改类别</button></center> <脚本> var change_class=文档.getElementById(“change-class”); change_class.onclick=函数() { var icon=文档.getElementById(“图标”); icon.className=“fa fa-gear”; } </script> </body> </html>