| | | OFFLINE | Post: 518 Post: 344 | Registrato il: 26/06/2003
| Città: ALTIVOLE | Sesso: Maschile | Occupazione: Studente | Utente Senior | |
|
/*
Inner Dom 1.2 speed increase,
corrected table issue,
released under Creative commons license ;)
http://creativecommons.org/licenses/by-nc-nd/2.0/
*/
var innerDom = function(){
var D=document;
var F=D.createDocumentFragment();
function rep(o,n){
if(o.parentNode)
o.parentNode.replaceChild(n,o);
return n;
}
function app(r,n){
return r.appendChild(n);
}
function text(t){
return D.createTextNode(t);
}
function ele(el){
return D.createElement(el);
}
function set(n,an,av){
n.setAttribute(an,av);
}
function doObject(obj){
var nodo=ele(obj.TAG);
for(var prop in obj){
if(prop!="INNER" && prop !="TAG")
set(nodo,prop,obj[prop]);
else
if(prop=="INNER"){
var t=app(F,D.createDocumentFragment());
app(nodo,innerDo(t,obj.INNER));
}
}
return nodo;
}
function doArray(a,df){
var max=a.length;
for(var i=0;i<max;i++){
app(df,innerDo(D.createDocumentFragment(),a));
}
return df;
}
function innerDo(domnode,obj){
switch (obj.constructor){
case String: return rep(domnode,text(obj));break;
case Number: return rep(domnode,text(""+obj));break;
case Array: return rep(domnode,doArray(obj,D.createDocumentFragment()));
break;
case Object: return rep(domnode,doObject(obj));break;
}
}
this.innerDom=innerDo
}
____________________________
|
20/04/2006 08:07 |
|
|
|