简单实现JS对dom操作封装

实现JS对DOM操作的封装一般有如下几个步骤:

1.定义一个构造函数,用于实例化一个操作DOM的对象

2.在该构造函数的原型上,定义一系列方法,用于对DOM进行操作。比如,增加、删除、修改元素的属性、样式等

3.封装一些通用的操作DOM的方法,比如获取元素、遍历元素、判断元素类型等,方便调用者使用

4.用新增的构造函数创建一个实例对象,调用封装好的方法操作DOM

下面,我来分几个步骤讲述一下如何实现JS对DOM操作的封装:

1.定义构造函数

function DomUtil(selector) {
    this.element = document.querySelector(selector)
}

在构造函数中,我们使用document.querySelector方法选择DOM元素,并将其赋值给构造函数的实例对象。

2.添加针对DOM的操作方法

我们可以在构造函数原型上添加一些操作DOM的方法,如下所示:

DomUtil.prototype = {
    setAttr: function(key, value) {
        this.element.setAttribute(key, value);
    },
    removeAttr: function(key) {
        this.element.removeAttribute(key);
    },
    addClass: function(className) {
        this.element.classList.add(className);
    },
    removeClass: function(className) {
        this.element.classList.remove(className);
    },
    setStyle: function(key, value) {
        this.element.style[key] = value;
    },
    getContent: function(){
        return this.element.innerHTML;
    },
    setContent: function(content) {
        this.element.innerHTML = content;
    }
}

这些方法可以实现一些常用的操作,比如设置/删除元素属性,修改元素样式,获取元素内容等。

3.添加通用的DOM操作方法

我们可以添加一些通用的操作DOM的方法,比如获取元素、遍历元素、判断元素类型等:

var DomUtil = function(selector) {
    if (!(this instanceof DomUtil)) return new DomUtil(selector);

    switch (typeof selector) {
        case 'string':
            this.element = document.querySelector(selector);
            break;
        case 'object':
            this.element = selector;
            break;
    }
}   

DomUtil.prototype = {
    setAttr: function(key, value) {
        this.element.setAttribute(key, value);
    },
    removeAttr: function(key) {
        this.element.removeAttribute(key);
    },
    addClass: function(className) {
        this.element.classList.add(className);
    },
    removeClass: function(className) {
        this.element.classList.remove(className);
    },
    setStyle: function(key, value) {
        this.element.style[key] = value;
    },
    getContent: function(){
        return this.element.innerHTML;
    },
    setContent: function(content) {
        this.element.innerHTML = content;
    },
    find: function(selector) {
        return new DomUtil(this.element.querySelector(selector));
    },
    findAll: function(selector) {
        var elements = this.element.querySelectorAll(selector);
        return Array.prototype.map.call(elements, function(element) {
            return new DomUtil(element);
        });
    },
    each: function(callback) {
        var elements = this.element.children;
        for (var i = 0; i < elements.length; i++) {
            var element = elements[i];
            callback.call(new DomUtil(element), i, element);
        }
    },
    isElement: function() {
        return (typeof HTMLElement === "object") ? (this.element instanceof HTMLElement) : (this.element && typeof this.element === "object" && this.element.nodeType === 1 && typeof this.element.nodeName==="string");
    }
}

这些方法可以让用户更加方便地操作DOM元素。

4.创建实例对象,调用方法

我们可以创建一个实例对象,调用封装好的方法,比如:

var ele = new DomUtil('.box');
ele.setAttr('data-role', 'box');
ele.addClass('test');
ele.setStyle('fontWeight', 'bold');

这样就可以操作DOM元素了。

下面给出两个示例说明:

1.传入字符串选择器:

var domUtil = new DomUtil('.box'); //这里选择了一个class为box的div
domUtil.setStyle('background-color', '#f00');

这段代码会将背景色设置为红色。

2.传入DOM元素:

var domUtil2 = new DomUtil(document.querySelector('#box2'));
domUtil2.setContent('content change');

这段代码会将HTML元素的内容改为 "content change"。

总结:以上就是实现JS对DOM操作的封装的攻略,封装好的代码可以有效的减少我们在使用DOM元素时的代码量,使操作更加简单易懂,增加我们的开发效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:简单实现JS对dom操作封装 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • js定时器出现第一次延迟的原因及解决方法

    JS定时器出现第一次延迟的原因是:浏览器在解释JavaScript代码时,会从上到下依次执行,而定时器是一种异步事件,会被放到事件队列中,等待JavaScript引擎空闲时才会执行。因此,定时器第一次执行会有一段时间的等待。 解决方法则是使用setTimeout()或setInterval()方法,并通过调用一次函数来解决此问题。 示例1:使用setTime…

    JavaScript 2023年6月11日
    00
  • 好好了解一下Cookie(强烈推荐)

    关于“好好了解一下Cookie(强烈推荐)”这个主题,我可以给你详细的攻略。 什么是Cookie Cookie,中文名为“饼干”,是浏览器保存在用户本地设备(例如电脑、手机)上的一小段数据。用来记录用户上一次访问网站时的信息,比如登录状态、浏览历史、购物车、广告偏好等等。当用户再次访问同一网站时,这些信息可以被读取,从而提高用户体验。 Cookie的使用 可…

    JavaScript 2023年6月11日
    00
  • 使用 Opentype.js 生成字体子集的实例代码详解

    使用 Opentype.js 生成字体子集的实例代码详解 什么是 Opentype.js Opentype.js 是一个 JavaScript 库,主要用于解析和操作 OpenType 字体。通过使用 Opentype.js,我们可以将 OpenType 字体嵌入到 Web 页面中,并对其进行各种操作,如显示、排版、模糊和旋转等。 什么是字体子集 字体子集是…

    JavaScript 2023年5月27日
    00
  • HTML页面嵌入视频与JS控制切换视频示例详解

    HTML页面嵌入视频与JS控制切换视频示例详解 HTML页面中嵌入视频是网页制作一个比较基础的功能,在现代网站中,视频的应用越来越广泛,这里我们将介绍如何嵌入视频,并用JS控制切换视频的方法。 嵌入视频 HTML5中嵌入视频,可以使用video标签实现,示例代码如下: <video src="video.mp4" controls&…

    JavaScript 2023年6月11日
    00
  • JS统计Flash被网友点击过的代码

    要统计Flash被网友点击过的次数,需要使用JavaScript监听Flash的点击事件并发送统计数据。以下是完整攻略: 步骤一:检测Flash是否存在 在HTML页面中,使用 object 或 embed 标签嵌入Flash对象,需要先判断Flash是否存在。 <div id="flashContainer"> <ob…

    JavaScript 2023年6月11日
    00
  • 有趣的JavaScript数组长度问题代码说明

    下面我会详细讲解“有趣的JavaScript数组长度问题代码说明”的完整攻略,包含以下内容: 核心概念:JavaScript数组的length属性 思路分析:通过操作length属性实现数组元素的删除与插入 代码示例1:删除数组元素的常规方法和length属性的应用 代码示例2:插入数组元素的常规方法和length属性的应用 1. 核心概念:JavaScri…

    JavaScript 2023年5月27日
    00
  • js异步加载的三种解决方案

    下面开始讲解“js异步加载的三种解决方案”。 异步加载的概念 在前端开发中,为了提高网页加载速度和用户体验,我们常常需要异步加载页面元素或脚本。常见的异步加载方式有三种,分别是:动态添加script标签、使用XMLHttpRequest请求和使用WebWorkers。 动态添加script标签 动态添加script标签是最常用的异步加载方式之一,它的原理是通…

    JavaScript 2023年5月28日
    00
  • HTML5实现的震撼3D焦点图动画的示例代码

    下面是关于“HTML5实现的震撼3D焦点图动画”的完整攻略,主要分为以下三个部分: 一、准备工作 1.1 导入必要的CSS和JS文件 HTML5实现的震撼3D焦点图动画需要使用一些CSS和JS文件,这些文件需要事先导入到HTML页面中。 其中必要的CSS文件有: <link rel="stylesheet" href="c…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部