欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解原生JS动态添加和删除类

程序员文章站 2023-11-14 13:53:52
由于需要, 给按钮组监听点击事件(要求用事件委托),当有一个按钮被点击时,相应的给该按钮添加一个类(激活类),其他没有点击的按钮就要移出该类 添加和和删除类有三种方法...

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

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

首先等到一个 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 添加 删除