1. 详解原生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;家对脚本之家网站的支持!

    相关文章

    最新评论

    山东群英会开奖查询
      1. 广东十一选五专家杀号 儿童学象棋口诀 幸运农场软件 码报图片2019高清图 博彩网有好玩吗 内蒙古时时彩开奖现场报码 体彩顶呱刮字母 香港曾道人一码中特 怎样看极速时时彩走势 排列三和值走势图淘宝 双色球近期中大奖新闻 今天黑龙江22选5开奖 吉林新快3预测8月21日 韩国二分彩官网 nba新闻虎扑