详解原生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 都移除激活的类 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动态添加和删除类详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • javascript作用域和闭包使用详解

    javascript作用域和闭包使用详解

    这篇文章主要介绍了javascript作用域和闭包使用详解,需要的朋友可以参考下
    2014-04-04
  • Javascript基础教程之JavaScript语法

    Javascript基础教程之JavaScript语法

    本文是javascript基础教程的第一篇,给大家带来的是javascript的最基础的东西--javascript的语法的注意事项,希望大家能够喜欢
    2015-01-01
  • 文档对象模型DOM通俗讲解

    文档对象模型DOM通俗讲解

    DOM是非常容易理解的,但是大家说的太官方,让人很是难于理解,我们就用非常简单的语言翻译一遍,感兴趣的朋友可以参考下
    2013-11-11
  • js遍历td tr等html元素

    js遍历td tr等html元素

    如何使用js实现遍历html元素比如:tr td等,本文将提供实现代码,需要了解的朋友可以参考下
    2012-12-12
  • 为JS扩展Array.prototype.indexOf引发的问题及解决办法

    为JS扩展Array.prototype.indexOf引发的问题及解决办法

    这篇文章主要介绍了为JS扩展Array.prototype.indexOf引发的问题及解决办法,需要的朋友可以参考下
    2015-01-01
  • javascript学习笔记(二)数组和对象部分

    javascript学习笔记(二)数组和对象部分

    本文是学习笔记系列的第二篇,深入浅出的分别从javascript对象和数组两个部分介绍了相关知识,并附上详细示例,非常的实用,有需要的朋友可以参考下
    2014-09-09
  • 简单学习JavaScript中的for语句循环结构

    简单学习JavaScript中的for语句循环结构

    这篇文章主要介绍了简单学习JavaScript中的for语句循环结构,是JavaScript入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • JavaScript入门初体验书写方式

    JavaScript入门初体验书写方式

    学了这么久,你真的了解javascript吗?很多不知道的小白总是把它和java联系在一起,在这里阿牛很负责任的告诉你们,两者没有任何关系,今天就来带你们一起揭开javascript的神秘面纱
    2022-03-03
  • 全面了解js中的script标签

    全面了解js中的script标签

    下面小编就为大家带来一篇全面了解js中的script标签。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • 深入理解JavaScript系列(40):设计模式之组合模式详解

    深入理解JavaScript系列(40):设计模式之组合模式详解

    这篇文章主要介绍了深入理解JavaScript系列(40):设计模式之组合模式详解,组合模式(Composite)将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性,需要的朋友可以参考下
    2015-03-03

最新评论