由于需要, 给按钮组监听点击事件(要求用事件委托),当有一个按钮被点击时,相应的给该按钮添加一个类(激活类),其他没有点击的按钮就要移出该类
添加和和删除类有三种方法
首先等到一个 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和JQuery动态添加、删除表格行的方法,包括了原生JS和JQuery动态添加、删除表格行的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了原生JS和JQuery动态添加、删除表格行的方法。分享给大家供大家参考。具体分析如下: 下面HTML代码作用:提交一个表单,将复选框的值提交(复选框的值等于后面的文本框,复选框和文本框处在同一行,可以动态添加和删除)。 原生态
本文向大家介绍详解用JS添加和删除class类名,包括了详解用JS添加和删除class类名的使用技巧和注意事项,需要的朋友参考一下 下面介绍一下如何给一个节点添加和删除class名 添加:节点.classList.add("类名"); 删除:节点.classList.remove("类名"); 以tab切换为例: 在写tab切换的时候,通常我们会给选中的tab设置不同的样式,常用的方法是给被选中的
本文向大家介绍原生js事件的添加和删除的封装,包括了原生js事件的添加和删除的封装的使用技巧和注意事项,需要的朋友参考一下 在IE浏览器中添加或删除事件用attachEvent、detachEvent。在其他标准浏览器中则用addEventListener、removeEventListener。下面的对事件的添加和删除做了封装。直接看代码吧! 其他补充关于addEventListener第三个参
问题内容: 当前的官方文档仅显示如何动态 更改 标签 内 的组件。 我想实现的是,让我们说我有3个部分组成:,,并具有以下选择: 再有6个按钮,这将增加或删除每个组件:,,和 当我单击时,该页面将添加到呈现它的页面中,因此该页面将包含: 然后,如果我单击两次,该页面现在将包含: 如果单击,该页面现在将包含所有这些组件: 可以在Angular中实现吗?请注意,这不是我要寻找的解决方案,因为它仅允许向
本文向大家介绍JavaScript实现动态添加,删除行的方法实例详解,包括了JavaScript实现动态添加,删除行的方法实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现动态添加,删除行的方法。分享给大家供大家参考。具体如下: JavaScript实现动态的增加或删除table的行 希望本文所述对大家的javascript程序设计有所帮助。
本文向大家介绍详解Linux添加/删除用户和用户组,包括了详解Linux添加/删除用户和用户组的使用技巧和注意事项,需要的朋友参考一下 本文总结了Linux添加或者删除用户和用户组时常用的一些命令和参数。废话不多说,下面我们来看一下。 1、建用户: adduser phpq //新建phpq用户 passwd phpq