/*Inner Dom 1.01 corrected Array issue,
released under Creative commons license ;)
http://creativecommons.org/licenses/by-nc-nd/2.0/
*/
var D=document;
function rep(o,n){
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=ele("span");
app(D.getElementsByTagName("body")[0],t);
app(nodo,innerDo(t,obj.INNER));
}
}
return nodo;
}
function doArray(a){
var max=a.length;
var a2=new Array(max);
for(var i=0;i<max;i++){
switch(a[i].constructor){
case Object:
a2[i]=doObject(a[i]);
break;
case Array:
a2[i]=doArray(a[i]);break
default:
a2[i]=text(""+a[i]);break;
}
}
return a2;
}
function innerDom(domnode,obj){
var max=domnode.childNodes.length;
for(var i=0;i<max;i++)
domnode.removeChild(domnode.childNodes[i]);
innerDo(domnode,obj);
}
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:
var a=doArray(obj);
var max=a.length;
for(var i=0;i<max;i++)
app(domnode,a[i]);
return domnode;
break;
case Object: return rep(domnode,doObject(obj));break;
}
}
Modificato da kentaromiura 14/04/2006 13.44
____________________________
_____________
[URL]http://www.freeforumzone.com/viewforum.aspx?f=19716[=URL]Kentaromiura[/URL]