Dom build

DOM的创建

在没有学习函数的封装以前,对于DOM的操做很麻烦;之前咱们要常常调用元素还有各类方法,当我把一个对象封装起来的话,有些就变得简单了。就像一个计算器,加法是基础的方法,当你想使用乘法的时候,好比5x5;其实就是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_titleapp

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发表的第一篇文章,算是新手上路;但我不求你们多多包涵,求你们多多批评!学习

相关文章
相关标签/搜索