博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原生JS动态添加和删除类
阅读量:5034 次
发布时间:2019-06-12

本文共 2042 字,大约阅读时间需要 6 分钟。

原生JS动态添加和删除类

由于需要, 给按钮组监听点击事件(要求用事件委托),当有一个按钮被点击时,相应的给该按钮添加一个类(激活类),其他没有点击的按钮就要移出该类

添加和和删除类有三种方法

首先等到一个 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

按钮1
按钮2
按钮3
按钮4

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"; // 用其中一个就行});

转载于:https://www.cnblogs.com/zhoufei-blog/p/10506379.html

你可能感兴趣的文章
逆时针旋转的矩阵变换
查看>>
第10周15/16/17
查看>>
四六级作文常见错误解析(转载)
查看>>
Tomcat
查看>>
./是当前目录 ../是当前的上一级目录。上上级就是../../一般绝对路径时候常用...
查看>>
linux支持FTP和SFTP服务【1】
查看>>
树的递归与非递归遍历方法
查看>>
每天一个Linux命令(6):rmdir命令
查看>>
oracle连接的三个配置文件(转)
查看>>
Vim配置文件(Vimrc)
查看>>
RecyclerView 局部刷新(获取viewHolder 去刷新)
查看>>
PHP表单(get,post)提交方式
查看>>
使用vbs或者bat脚本修改IE浏览器安全级别和选项
查看>>
Silverlight入门
查看>>
LeetCode 895. Maximum Frequency Stack
查看>>
模仿segmentfault 评论
查看>>
一个简单的日志函数C++
查看>>
Java 8 中如何优雅的处理集合
查看>>
IOS程序的启动过程
查看>>
连接Linux下 XAMPP集成环境中部署的禅道的数据库MariaDB
查看>>