DomHelper

createDom(o, parentNode)是Ext.DomHelper的静态方法.
var c = [{}, {}]; 
Ext.createDom(c, document);
function createDom(o, parentNode){
        var el,
        	doc = document,
        	useSet,
        	attr,
        	val,
        	cn;
        if (Ext.isArray(o)) {                   
            el = doc.createDocumentFragment();//创建一个存放兄弟节点的容器
	        Ext.each(o, function(v) {
                createDom(v, el); //递归调用数组的每个元素
            });
        } else if (Ext.isString(o)) { 
            el = doc.createTextNode(o);
        } else {
            el = doc.createElement( o.tag || 'div' );
            useSet = !!el.setAttribute; //IE下有些属性没有setAttribute(!!转换boolean的小技巧)
            Ext.iterate(o, function(attr, val){//Ext的对象迭代器,o迭代的对象,attr对象的属性名,val对象的属性值
                if(!/tag|children|cn|html|style/.test(attr)){
	                if(attr == 'cls'){
	                    el.className = val;//设置样式名
	                }else{//设置其他属性
                        if(useSet){
                            el.setAttribute(attr, val);
                        }else{
                            el[attr] = val;
                        }
	                }
                }
            });
            pub.applyStyles(el, o.style);//应用样式

            if ((cn = o.children || o.cn)) {
                createDom(cn, el);//如果属性配置了子容器,刚刚创建的元素作为父节点,迭代继续...
            } else if (o.html) {
                el.innerHTML = o.html;
            }
        }
        if(parentNode){
           parentNode.appendChild(el);
        }
        return el;
    }

你可能感兴趣的:(html,c,function,div)