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

 更新时间£º2019年03月26日 15:13:08   作者£ºzh阿飞   我要评论

这篇文章主要介绍了原生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

<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 ?#23478;?#38500;激活的类 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"; // 用其中一个?#25176;?
	}
	// 添加类, 拿到具体的 btn 给它添加类
	myEventUtil.getTarget(ev).classList.add("btn-active"); 
	// myEventUtil.getTarget(ev).className = "btn"; // 用其中一个?#25176;?
});

以上所述是小编给大家介绍的原生JS动态添加和删除类详解整合£¬希望对大家有所帮助£¬如果大家有任?#25105;?#38382;请给我留言£¬小编会及时回复大家的¡£在此也非常?#34892;?#22823;家对脚本之家网站的支持£¡

相关文章

最新评论

ÁÉÄþ35Ñ¡7¿ª½±½á¹û