在没有学习函数的封装以前,对于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发表的第一篇文章,算是新手上路;但我不求你们多多包涵,求你们多多批评!学习