由于需要, 给按钮组监听点击事件(要求用事件委托),当有一个按钮被点击时,相应的给该按钮添加一个类(激活类),其他没有点击的按钮就要移出该类
添加和和删除类有三种方法
首先等到一个 dom 对象(也叫dom元素), 通过document.getElement……的几种方法得到
如`
let element = document.getElementById("box");
1.通过类名, 获取类名: el.className, 赋值: el.className = "className" 会覆盖掉原来的类
2.通过属性,获取类名: el.getAttribute("class"); 赋值: el.setAttribute("class", "className1 className2"); 会覆盖掉原来的类
3.通过属性节点 attributeNode(性能差一点,但能兼容ie,getAttribute() ie 的有些版本不支持 )setAttributeNode() 方法向元素中添加指定的属性节点。
如果这个指定的属性已存在,则此方法会替换它。,获取类名: getAttributeNode("class").value, 赋值:
let attr = document.createAttribute("class"); attr.nodeValue = "className"; el.setAttributeNode(attr)
4.通过 classList属性, 获取类名 el.classList; 追加类名: el.classList.add("className"); 删除类 : el.calssList.remove("className");
上边四种方法, classList最灵活,最好好用, 但是不支持 ie9 以下的浏览器, 兼容性要差一些
代码如下:
html
<div id="btn-group"> <div class="btn btn-active">按钮1</div> <div class="btn">按钮2</div> <div class="btn">按钮3</div> <div class="btn">按钮4</div> </div>
js代码, 其中用到了ES6语法(用ES6写简洁)
let myEventUtil = { // 添加监听事件 addEvent (element, type, handler) { if (element.addEventListener) { element.addEventListener(type, handler, false); } else if (element.attach){ // ie element.attach("on"+ type, handler); } else { element['on' + type] = handler; } }, getTarget (event) { let event = event || window.event; return event.target || event.srcElement; } } let my$ = id => document.getElementById(id); let btnGroup = my$(“btn-group”); myEventUtil.addEvent(btnGroup, 'on', function (ev) { // 给所有的 btn 都移除激活的类 btn-active // console.log(this) ==> 是一个dom元素 btnGroup // 可以通过 el.children[i]拿到具体的子元素 // 拿到子元素了可以通过 el.classList.remove("className") 删除类 // el.classList.add("className") 来添加类 // 删除类 let len = this.children.length; for (let i = 0; i < len; i ++) { this.children[i].classList.remove("btn-active"); // this.children[i].className = "btn"; // 用其中一个就行 } // 添加类, 拿到具体的 btn 给它添加类 myEventUtil.getTarget(ev).classList.add("btn-active"); // myEventUtil.getTarget(ev).className = "btn"; // 用其中一个就行 });
以上所述是小编给大家介绍的原生JS动态添加和删除类详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
JS动态添加和删除类
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。