DOM封装(自己写一个DOM库)

本文介绍了作者在学习DOM原生API过程中,为解决API不便使用的问题,自封装的一套DOM库。涵盖增加节点(创建、新增弟弟、哥哥、儿子、爸爸)、删除节点及后代、修改节点属性、文本、HTML内容、样式、class以及事件监听,还包括查找节点(获取标签、父元素、子元素、兄弟姐妹、弟弟、哥哥)等功能。总结中强调了自定义库的灵活性和易用性。
摘要由CSDN通过智能技术生成

前言

DOM提供的api实在是不好用,各种各样的都有,需要记住的又多,特性不一,还要考虑兼容性问题。
在学习DOM原生api的同时,自己封装一套好用的api,即把原生api学会了,又做出一套好用的api;

首先是把声明一个dom全局变量,并挂载在window上。
dom = window.dom
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一,增加节点

创建节点dom.create(<div>hi</div>)
create(string) {
   
    const container = document.createElement("template");
    container.innerHTML = string.trim();
    return container.content.children[0];
  }

思路:用一个template标签,把传进来的内容包裹住,再返回需要创建的标签。
应为可能创建的标签是全部,比如li标签,div不能直接包裹住li标签。
所以template是最合适的。

新增弟弟dom.after(node, node2)
after(node, node2) {
   
    node.parentNode.insertBefore(node2, node.nextSibling);
  }

先来熟悉原生api

  • insertBefore(node1, node2):把node1插入到node2前面
  • node.nextSibling:node的下一个兄弟节点

思路:找到父节点,插入到node后面兄弟节点的前面

新增哥哥 dom.before(node, node2)
before(node, node2) {
   
    node.parentNode.insertBefore(node2, node);
  },

思路:找到父节点,插入到node节点前面

新增儿子 dom.append(parent, child)
append(parent, node) {
   
    parent.appendChild(node);
  }

这个差不多只是把单词字母变少了,和原生的api没有本质区别

新增爸爸 dom.wrap(<div></div>)
wrap(node, parent) {
   
    dom.before(node, parent);
    dom.append(parent, node);
  },

代码很精简,但是理解起来不是很好理解。
举个栗子node1->node2
现在来一个node3,要求不顺序变成node1->node3->node2
思路:把node3插入到node2前面,node2和node3变成兄弟节点,再把node2变成node3的子节点。

删除

删除节点 dom.remove(node)
remove(node) {
   
    node
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值