Dom build

DOM的竖立

在没有进修函数的封装之前,关于DOM的操纵很贫苦;之前我们要常常挪用元素另有种种要领,当我把一个对象封装起来的话,有些就变得简朴了。就像一个计算器,加法是基本的要领,当你想运用乘法的时刻,比方5×5;实在就是5个5相加,原本须要挪用5次+的要领,而我们想把加法和加的次数封装起来,把这个封装的函数定名的符号为x;如许我们是不是减少了很多步骤呢?
接下来,我就分享对象的竖立,及封装。

一 先建立一个对象

//建立一个对象字面量DOMBuilder,其功能为建立DOM的封装
var DOMBuilder = {
 }

二 增加要领

var DOMBuilder = {
    //建立要领,传入参数(tag 标签 attrs 属性的数组 children 子元素)
    create:function(tag, attrs, children) {
    }
 }

三 推断参数

var DOMBuilder = {
    create:function(tag, attrs, children) {
    //假如attrs 未传输,默许其为空对象,以避免报错; || 或许
    attrs = attrs || {};
    //假如子节点 未传输,默许为空数组
    children = children || [];
    }
 }

四 建立元素并为其增加属性

var DOMBuilder = {
    create:function(tag, attrs, children) {
    attrs = attrs || {};
    children = children || [];
    //el 为建立后的元素
    var el = document.createElement(tag);
    //给元素增加属性, for in 常用于JSON中遍历对象
        for(var attr in attrs) {
          el.setAttribute(attr,attrs[attr].toString());
        }
    }
 }

五 增加子元素,并推断元素

var DOMBuilder = {
    create:function(tag, attrs, children) {
    attrs = attrs || {};
    children = children || [];
    var el = document.createElement(tag);
        for(var attr in attrs) {
          el.setAttribute(attr,attrs[attr].toString());
        }
         //给元素增加子元素
        for(var i = 0; i < children.length;i++) {
          //假如是文本,将子节点设置为文本节点
          if (typeof children[i] == 'string') {
            children[i] = document.createTextNode(children[i]);
          }
          //将子元素增加到el上
          el.appendChild(children[i]);
        }
    }
 }

六 完美函数体,并连系目标来挪用

    var DOMBuilder = {
      //建立要领 tag 标签 attrs 属性的数组 children 子元素
      create:function(tag, attrs, children) {
        //假如attrs 未传输,默许其为空对象,以避免报错; || 或许
        attrs = attrs || {};
        //假如子节点 未传输,默许为空数组
        children = children || [];
        //el 为建立后的元素
        var el = document.createElement(tag);
        //给元素增加属性, for in 常用于JSON中遍历对象
        for(var attr in attrs) {
          el.setAttribute(attr,attrs[attr].toString());
        }
        //给元素增加子元素
        for(var i = 0; i < children.length;i++) {
          //假如是文本,将子节点设置为文本节点
          if (typeof children[i] == 'string') {
            children[i] = document.createTextNode(children[i]);
          }
          //将子元素增加到el上
          el.appendChild(children[i]);
        }
        return el;
      }
    }

A.我们给页面增加一个 h1 的标签,它的id 为 h1_title

    var h1 = DOMBuilder.create('h1', {id:'h1_title',title:'题目'},['DOMBuilder']);
    document.body.appendChild(h1);

B.我们建立一个id 为list 的ul标签,ul下有一个类名为item 的li 标签

    var li = DOMBuilder.create('li', {class:'list'},['item']);
    var ul = DOMBuilder.create('ul',{id:'list'},[li]);
    document.body.appendChild(ul);

这是我在SegmentFault宣布的第一篇文章,算是新手上路;但我不求人人多多见谅,求人人多多指摘!

    原文作者:不热
    原文地址: https://segmentfault.com/a/1190000006821433
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞