// (gH) -_- exemple3.js ; TimeStamp (unix) : 16 Octobre 2009 vers 15:13
// ###############################################################
function sousArbreDom(currentElement, depth,attr) {
// ###############################################################
tdd = typeof(depth) ; if (tdd=="undefined") { depth = 1 }
if (typeof(attr)=="undefined") { attr = 1 }
rt = "" // initialisation de la chaine à renvoyer
// ceci constitue le critère d'arret
if (currentElement) {
var tagName=currentElement.tagName;
// on écrit la balise comme <a>, <img>, etc
if (tagName) {
if (depth>=1) {
rt += "<"+currentElement.tagName.toLowerCase()
// il faut maintenant récupérer les attributs non nuls de la balise
if (attr==1) {
attrs = ""
nbac = currentElement.attributes.length
if (nbac>0) {
for (ida=0; ida<currentElement.attributes.length;ida++ ) {
curn = currentElement.attributes[ida].name
curv = currentElement.attributes[ida].value
ok = 1
if (typeof(curv)=='undefined') { ok = 0 }
if (curv=='null') { ok = 0 }
if (!curv) { ok = 0 }
if (curv==null) { ok = 0 }
if (curv==0) { ok = 0 }
if (curv=='') { ok = 0 }
if (ok==1) {
attrs += " " + curn + "='" + curv + "'";
} // fin si
} // fin pour
} // fin si
rt += attrs
} // fin si
} // fin si
} else {
cv = currentElement.nodeValue
rt += cv
} // fin de si
if (tagName) {
if (depth>=1) {
rt += ">"
} // fin si
// traversée récursive de l'arbre
var indc=0;
var enfant=0;
var currentElementChild=currentElement.childNodes[indc];
while (currentElementChild) {
// traversée récursive du sous-arbre du noeud enfant
rt += sousArbreDom(currentElementChild, depth+1,attr);
indc++;
currentElementChild=currentElement.childNodes[indc];
} // fin de tant que
// fermeture éventuelle de la balise
if (tagName) {
if (depth>=1) {
rt += "</"+tagName.toLowerCase()+">";
} // fin si
} // fin si
} // fin si
} // fin de si currentElement
return( rt )
} // fin de fonction sousArbreDom
// ###############################################################
function sousArbreDomGraphique(currentElement, depth,attr) {
// ###############################################################
tdd = typeof(depth)
if (tdd=="undefined") { depth = 1 }
tda = typeof(attr)
if (tda=="undefined") { attr = 1 }
if (currentElement) {
// -------------------------------------------------------------
var j;
var tagName=currentElement.tagName;
if (tagName) {
ecrit_infos_sansrc("<"+currentElement.tagName.toLowerCase());
if (attr==1) {
// il faut maintenant récupérer les attributs non nuls de la balise
attrs = ""
nbac = currentElement.attributes.length
if (nbac>0) {
for (ida=0; ida<currentElement.attributes.length;ida++ ) {
curn = currentElement.attributes[ida].name
curv = currentElement.attributes[ida].value
ok = 1
if (typeof(curv)=='undefined') { ok = 0 }
if (curv=='null') { ok = 0 }
if (!curv) { ok = 0 }
if (curv==null) { ok = 0 }
if (curv==0) { ok = 0 }
if (curv=='') { ok = 0 }
if (ok==1) {
attrs += " " + curn + "='" + curv + "'";
} // fin si
} // fin pour
ecrit_infos_sansrc(attrs);
} // fin si
} // fin si
ecrit_infos_sansrc(">");
} else {
// ==> ecrit_infos_sansrc("[unknown tag]")
nv = currentElement.nodeValue;
// ne pas afficher retour-charriot (code 10 mais [rc])
if (nv.charCodeAt(0)==10) {
ecrit_infos_sansrc("[rc]")
} else {
ecrit_infos_sansrc(nv)
} // fin si
} ; // fin si
// ---------------- partie récursive -----------------------
var i=0;
var currentElementChild=currentElement.childNodes[i];
while (currentElementChild) {
ecrit_infos_sansrc("\n");
for (j=0; j<depth; j++) {
ecrit_infos_sansrc(" |");
} // fin pour
if (tagName) {
ecrit_infos_sansrc("--");
} // fin si
sousArbreDomGraphique(currentElementChild, depth+1,attr);
i++;
currentElementChild=currentElement.childNodes[i];
} // fintant que
// -------------------------------------------------------------
if (tagName) {
if (depth>=1) {
ecrit_infos_sansrc("\n");
for (j=0; j<depth-1; j++) {
ecrit_infos_sansrc(" |");
} // fin pour
if (depth>1) { ecrit_infos_sansrc(" "); }
} // fin si
ecrit_infos_sansrc("</"+tagName.toLowerCase()+">");
} // fin si
currentElement=0;
} // fin si
} // fin de fonction sousArbreDomGraphique
// ###############################################################
|