// (gH) -_- testdom.js ; TimeStamp (unix) : 16 Juin 2009 vers 14:44 // ############################################################### function reset_infos() { // ############################################################### document.getElementById("infos").value = "" return(false) } // fin de fonction reset_infos // ############################################################### function ecrit_infos(mesTxt) { // ############################################################### document.getElementById("infos").value += mesTxt + "\n" ; return(false) } // fin de fonction ecrit_infos // ############################################################### function ecrit_infos_sansrc(mesTxt) { // ############################################################### document.getElementById("infos").value += mesTxt ; return(false) } // fin de fonction ecrit_infos_sansrc // ############################################################### function analyse_cellule() { // ############################################################### tv = document.getElementById("ventes") // tableau des ventes msg = "-- Analyse d'une cellule\n" ecrit_infos(msg) ; // --------------------------------------------------------- lig = document.getElementById("ligne").value ; tdl = typeof(lig) if (tdl=="undefined") { msg = "Il n'y a rien dans le champ correspondant au numéro de ligne " ecrit_infos(msg) return(false) } // msg = "Numéro de ligne transmis : \""+lig+"\" typé en "+tdl ecrit_infos(msg) ilig = parseInt(lig,10) tdi = typeof(ilig) if (isNaN(ilig)) { msg = "Cette valeur ne correspond pas à un nombre entier" ecrit_infos(msg) return(false) } ; // fin de si msg = "après conversion en entier, ce numéro vaut : "+ilig+" typé en "+tdi ecrit_infos(msg) idlig = ilig - 1 msg = "indice de ligne interne : "+idlig ecrit_infos(msg) // on teste s'il déborde leslignes = tv.getElementsByTagName("tr") nblig = leslignes.length if (idlig>nblig-1) { msg = "Il n'y a que "+nblig+" ligne(s). L'indice "+idlig+" est donc incorrect." ecrit_infos(msg) return(false) } ; // fin de si if (idlig<0) { msg = "Le premier indice possible en interne est 0. L'indice "+idlig+" est donc incorrect." ecrit_infos(msg) return(false) } ; // fin de si ecrit_infos("") // --------------------------------------------------------- col = document.getElementById("colonne").value ; tdc = typeof(col) if (tdc=="undefined") { msg = "Il n'y a rien dans le champ correspondant au numéro de colonne " ecrit_infos(msg) return(false) } // msg = "Numéro de colonne transmis : \""+col+"\" typé en "+tdc ecrit_infos(msg) jcol = parseInt(col,10) tdj = typeof(jcol) if (isNaN(jcol)) { msg = "Cette valeur ne correspond pas à un nombre entier" ecrit_infos(msg) return(false) } ; // fin de si msg = "après conversion en entier, ce numéro vaut : "+jcol+" typé en "+tdj ecrit_infos(msg) jdcol = jcol - 1 msg = "indice de colonne interne : "+jdcol ecrit_infos(msg) // on teste s'il déborde if (jdcol<0) { msg = "Le premier indice possible en interne est 0. L'indice "+jdcol+" est donc incorrect." ecrit_infos(msg) return(false) } ; // fin de si maligne = leslignes[idlig] mescolonnes = maligne.getElementsByTagName("td") nbcol = mescolonnes.length // c'est peut-etre du th if (nbcol==0) { mescolonnes = maligne.getElementsByTagName("th") if (mescolonnes) { nbcol = mescolonnes.length } } ; // fin de si if (jdcol>nbcol-1) { msg = "Pour cette ligne, il n'y a que "+nbcol+" colonnne(s). L'indice "+jdcol+" est donc incorrect." ecrit_infos(msg) return(false) } ; // fin de si // --------------------------------------------------------- maCase = maligne.cells[jdcol] msg = "La cellule est, en interne "+maCase // HTMLTableCellElement ecrit_infos(msg) // pas de nodeValue // msg = "En tant que noeud, elle vaut "+maCase.nodeValue // ecrit_infos(msg) modet = document.getElementById("modet") // modet est object HTMLInputElement] if (modet.checked) { msg = "\nAffichage en mode texte\n" ecrit_infos(msg) msg = sousArbreDom(maCase) ecrit_infos(msg) msg = "\n -- fin d'affichage en mode texte" } // fin si mode texte modea = document.getElementById("modea") if (modea.checked) { msg = "\nAffichage en mode arbre\n" ecrit_infos(msg) sousArbreDomGraphique(maCase,1,1) msg = "\n -- fin d'affichage en mode arbre" } // fin si mode texte // --------------------------------------------------------- msg = "\nFin de l'analyse de la cellule" ecrit_infos(msg) ; } // fin de fonction analyse_cellule // ############################################################### function modifie(nature) { // ############################################################### /* récupération des valeurs */ ilig = document.getElementById("ligne").value ; jcol = document.getElementById("colonne").value ; msg = "Tentative de modification de la case " ; msg += "en ligne "+ilig+" colonne "+jcol ; msg += " en mode "+nature+"\n" ecrit_infos(msg) ; /* recherche dans le tableau */ nomTableau = "ventes" leTableau = document.getElementById(nomTableau) lesLignes = leTableau.getElementsByTagName("tr") // oui mais les indices commencent à 0 ilig_1 = ilig-1 jcol_1 = jcol-1 maLigne = lesLignes[ilig_1] mesColonnes = maLigne.getElementsByTagName("td") maCase = mesColonnes[jcol_1] msg = "son contenu en TD était *" msg += sousArbreDom(maCase) msg += "*" ecrit_infos(msg) ; maCase = maLigne.cells[jcol_1] msg = "sa nature était *" msg += maCase msg += "*" ecrit_infos(msg) ; msg = "son nombre d'enfants " nbe = maCase.childNodes.length msg += nbe ecrit_infos(msg) ; msg = "le type de son premier enfant est " tdpe = maCase.childNodes[0].nodeType msg += tdpe ecrit_infos(msg) ; msg = "description de son parent (balise <td>) :" atd = maCase.attributes for (ida=0;ida<atd.length;ida++) { msg += " Attribut "+(1+ida)+" : " msg += atd[ida].name + " ==> " msg += atd[ida].value // maCase.removeAttribute(atd[ida].name) } // fin pour ecrit_infos(msg) ; if (nature=="txt") { nouveauTexte = document.getElementById("nvt").value msg = "\non remplace le contenu par : \""+nouveauTexte+"\"" ecrit_infos(msg) ; if ((tdpe==3) && (nbe==1)) { // remplacement simple d'un noeud texte // ok pour document.getElementById(nomTableau).getElementsByTagName("tr")[ilig_1]. // getElementsByTagName("td")[jcol_1].childNodes[0].nodeValue = nouveauTexte maCase.childNodes[0].nodeValue = nouveauTexte } else { while (maCase.firstChild) { maCase.removeChild(maCase.firstChild) } // fin de tant que nouvelElement = document.createTextNode(nouveauTexte) maCase.appendChild(nouvelElement) } // fin de si /* remarque : le texte suivant marche tout aussi bien : maCase.innerHTML = nouveauTexte */ } // fin de si ecrit_infos("et voilà !") ; if (nature=="html") { nouveauHtml = document.getElementById("nvh").value msg = "\non remplace le contenu par : \""+nouveauHtml+"\"" ecrit_infos(msg) ; maCase.innerHTML = nouveauHtml } // fin de si ecrit_infos("et voilà !") ; return( false ) } // fin de fonction modifie // ############################################################### function clones() { // ############################################################### // on clone le tableau original cloneV = document.getElementById("ventes").cloneNode(true) } // fin de fonction clones // ############################################################### function taborg() { // ############################################################### attri = 0 finMsg = " (sans attributs)" if (document.getElementById("retr_tn").checked) { attri = 0 } if (document.getElementById("retr_to").checked) { attri = 1 } if (attri==1) { finMsg = " (avec attributs)" } msg = "Retour au tableau original "+finMsg+" sans recharger la page.\n" ecrit_infos(msg) ; lesTr = document.getElementById("ventes").getElementsByTagName("tr") ancTr = cloneV.getElementsByTagName("tr") msg = "Il y a "+lesTr.length+" lignes à remettre." ecrit_infos(msg) ; idl = 0 ; while (idl<lesTr.length) { msg = " restauration de la ligne "+idl // ecrit_infos(msg) ; laLig = lesTr[idl] vxLig = ancTr[idl] nbCol = laLig.cells.length // on fait l'impasse sur les attributs de <tr> ? jdc = 0 while (jdc<nbCol) { if (attri==0) { // sans attribut de cellule aval = laLig.cells[jdc].innerHTML nval = sousArbreDom(vxLig.cells[jdc],1,0) // il faut enlver td ou th nval = nval.replace(/<td>/,"") nval = nval.replace(/<\/td>/,"") nval = nval.replace(/<th>/,"") nval = nval.replace(/<\/th>/,"") msg = " en colonne "+jdc+" à la place de "+aval+" on met "+nval // if (jdc<=1) { ecrit_infos(msg) ; } laLig.cells[jdc].innerHTML = nval } else { // avec attributs aval = laLig.cells[jdc].innerHTML nval = vxLig.cells[jdc].innerHTML msg = " en colonne "+jdc+" à la place de "+aval+" on met "+nval // ecrit_infos(msg) ; laLig.cells[jdc].innerHTML = vxLig.cells[jdc].innerHTML // passons aux attributs du parent (<td>) leTd = laLig.cells[jdc] vxTd = vxLig.cells[jdc] vtd = vxTd.attributes nba = vtd.length if (nba>0) { msg = " "+nba+" anciens attributs " // ecrit_infos(msg) ; for (ida=0;ida<vtd.length;ida++) { msg = " ancien attribut numéro "+ida+" nom = "+vtd[ida].name+" valeur = "+vtd[ida].value // ecrit_infos(msg) ; leTd.setAttribute(vtd[ida].name,vtd[ida].value) } // fin pour ida } // fin si } // fin de si jdc++ } // fin de tant que idl++ } // fin de tant que msg = "Et voilà." ecrit_infos(msg) ; return( false ) } // fin de fonction taborg // ############################################################### function nocolor4tds() { // ############################################################### lesTr = document.getElementById("ventes").getElementsByTagName("tr") msg = "Suppression des couleurs de case..." ecrit_infos(msg) ; idl = 0 ; pom = document.getElementById("pomme") ; //pom.setAttribute(class,"vide") ; //pom.setAttribute(className,"vide") ; pom.className = "vide" ; // pour IE // pour chaque ligne ("<tr>") du tableau while (idl<lesTr.length) { // suppression des attributs pour la cellule laLig = lesTr[idl] nbCol = laLig.cells.length jdc = 0 while (jdc<nbCol) { maCase = laLig.cells[jdc] atd = maCase.attributes for (ida=0;ida<atd.length;ida++) { maCase.className = "vide" maCase.removeAttribute(atd[ida].name) } // fin pour jdc++ } // fin de tant que // suppression des attributs pour l'élément lesTd = laLig.getElementsByTagName("td") nbTd = lesTd.length jdc = 0 while (jdc<nbTd) { leTd = lesTd[jdc] // leTd.setAttribute(class,"vide") // leTd.setAttribute(className,"vide") atd = leTd.attributes for (ida=0;ida<atd.length;ida++) { leTd.className = "vide" // pour IE leTd.removeAttribute(atd[ida].name) } // fin pour jdc++ } // fin de tant que // on passe à la ligne suivante idl++ } // fin de tant que msg = "Terminée (remarque : on n'a pas supprimé les couleurs \"internes\")." ecrit_infos(msg) ; return( false ) } // fin de fonction nocolor4tds // ############################################################### function description_l2() { // ############################################################### attri = 0 finMsg = " (sans attributs)" if (document.getElementById("attr_tn").checked) { attri = 0 } if (document.getElementById("attr_to").checked) { attri = 1 } if (attri==1) { finMsg = " (avec attributs)" } numligsel = document.getElementById("numligsel") numlig = numligsel.selectedIndex msg = "Description du tableau ventes, ligne "+(1+numlig)+finMsg+"\n" ecrit_infos(msg) ; ecrit_infos(sousArbreDom(document.getElementById("ventes").getElementsByTagName("tr")[numlig],1,attri)) ecrit_infos("") ; // ############################################################### } // fin de fonction description_l2 // ############################################################### function arbre_l2() { // ############################################################### attri = 0 finMsg = " (sans attributs)" if (document.getElementById("attr_tn").checked) { attri = 0 } if (document.getElementById("attr_to").checked) { attri = 1 } if (attri==1) { finMsg = " (avec attributs)" } numligsel = document.getElementById("numligsel") numlig = numligsel.selectedIndex msg = "Arbre du tableau ventes, ligne "+(1+numlig)+finMsg+"\n" ecrit_infos(msg) ; depart = document.getElementById("ventes").getElementsByTagName("tr")[numlig] sousArbreDomGraphique(depart,1,attri) ecrit_infos("") ; } // fin de fonction arbre_l2 // ############################################################### function ajouteBoutonsDeTri(sens) { // sens ="ligne" ou "colonne" // ############################################################### tvn = document.getElementById("ventes").className msg = "la classe du tableau ventes était " + tvn + " sens demandé : " + sens ecrit_infos(msg) ; // on ajoute la classe qu'il faut si elle n'était pas déjà présente if (sens=="ligne") { if (tvn.indexOf("triLig") == -1) { tvn += " triLig" } // if (tvn.indexOf("triCol") != -1) { tvn = tvn.replace(" triCol","") } } else { if (tvn.indexOf("triCol") == -1) { tvn += " triCol" } // if (tvn.indexOf("triLig") != -1) { tvn = tvn.replace(" triLig","") } } // fin de si msg = "elle devient " + tvn ecrit_infos(msg) ; document.getElementById("ventes").className =tvn initialisationDesTableaux() } // fin de fonction ajouteBoutonsDeTri // ############################################################### function suppressionDesBoutonsDeTri() { // ############################################################### txt = "th><span onclick='tri_lig(this, 0);return false;' class='sortheader'>" txt += "<span senstri='d' class='triLig'><input type='button' value='d' class='vert_clair'></input></span>" txt += "<span class='gbleuf'>Mois</span>Bien joué !</span></th>" msg = "\nAU DEPART, ON A : "+txt ecrit_infos(msg) ; tabTxt = txt.split(/</) debTxt = "" finTxt = "" lonTab = tabTxt.length for (ide=0;ide<lonTab;ide++) { ok = 1 nelt = "<" + tabTxt[ide] msg = " indice "+ide+" elt = " + nelt ecrit_infos(msg) ; } // fin pour ide msg = "" ecrit_infos(msg) ; for (ide=0;ide<(lonTab/2)+1;ide++) { ok = 1 nelt = "<" + tabTxt[ide] msg = " indice "+ide+" elt = " + nelt ecrit_infos(msg) ; deb = nelt fin = "<"+tabTxt[lonTab-ide-1] trans = 0 if (nelt.indexOf("<span onclick='tri_")>-1) { trans = 1 } if (nelt.indexOf("<span senstri")>-1) { trans = 1 } if (trans==1) { // on doit virre la balise d'ouverture et la partie </span> correspondante // dans la balise de fermeture deb = "" fin = fin.replace(/<\/span>/,"") } // fin si debTxt = debTxt + deb finTxt = fin + finTxt msg = " ICI deb = "+deb+" et fin = "+fin + "\n" ecrit_infos(msg) ; } // fin pour ide newtxt = debTxt + finTxt msg = "\nAU FINAL, ON A : "+newTxt ecrit_infos(msg) ; return(false) // ---------------------------------------------- tvn = document.getElementById("ventes").className msg = "la classe du tableau ventes était " + tvn ecrit_infos(msg) ; tvn = tvn.replace(" triCol","") tvn = tvn.replace(" triLig","") tvn = tvn.replace(" triTab","") msg = "elle devient " + tvn ecrit_infos(msg) ; document.getElementById("ventes").className =tvn // cela ne suffit pas car // initialisationDesTableaux() // ajoute les flèches, mais ne les retire pas // on passe en revue : toute la ligne numéro 1 (indice 0) // et toutes les colonnes numéro 1 (indice 0) des autres lignes lesTh = document.getElementById("ventes").getElementsByTagName("th") nbTh = lesTh.length idTh = 0 while (idTh<nbTh) { elt = lesTh[idTh] msg = "- pour le th d'indice "+idTh ecrit_infos(msg) ; cnt = sousArbreDom(elt,1,1) msg = "il y a : "+cnt ecrit_infos(msg) ; msg = " si on enlève les span de tri, il reste : " ecrit_infos(msg) ; newCnt = "?" msg = newCnt elt.innerHTML = newCnt idTh++ } // fin tant que lesTr = document.getElementById("ventes").getElementsByTagName("tr") } // fin de fonction suppressionDesBoutonsDeTri // ###############################################################
Retour à la page principale de (gH)