// (gH) -_- solution2012.js ; TimeStamp (unix) : 28 Mai 2012 vers 10:49 // voici ce qui sera exécuté quand la page est chargée : addEvent(window, 'load', q1); addEvent(window, 'load', demotableau1); addEvent(window, 'load', demotableau2); addEvent(window, 'load', democej); addEvent(window, 'load', democejs); addEvent(window, 'load', democejs2); addEvent(window, 'load', democejs3); addEvent(window, 'load', democejs4); // ###################################################### function q1() { window.document.getElementById("txt1").innerHTML = "é".toUpperCase() ; } // fin de fonction q1 // ---------------------------------------------------------------------------- function demotableau1() { tablo1 = "un petit chat".split(" ") ; table1 = array2table(tablo1,"tab1") ; document.getElementById("divtableau1").appendChild(table1) ; } // fin de fonction demotableau1 // ---------------------------------------------------------------------------- function demotableau2() { tablo2 = "un petit chat".split(/\s+/) ; table2 = array2table(tablo2,"tab2") ; document.getElementById("divtableau2").appendChild(table2) ; // on aurait pu écrire // // document.getElementById("divtableau2").appendChild( // array2table( "un petit chat".split(/\s+/) ,"tab2") // ) ; // // ou meme // document.getElementById("divtableau2").appendChild( array2table( "un petit chat".split(/\s+/) ,"tab2") ) // // mais je préfére décomposer } // fin de fonction demotableau2 // ---------------------------------------------------------------------------- function tableauDecalage() { // pour savoir combien de jours sont écoulés pour une date donnée, // on utilise un tableau qui comptabilise les durées écoulées en fin de mois // // mois J F M A M J J A S 0 N D // jours par mois 31 28 31 30 31 30 31 31 30 31 30 31 // cumul 31 59 90 120 151 182 212 243 273 304 334 365 // on met 0 comme premier décalage, cela permet d'utiliser directement // le numéro du mois comme indice return( new Array(0,31,59,90,120,151,182,212,243,273,304,334,365) ) } // fin de fonction tableauDecalage // ---------------------------------------------------------------------------- function cej(jour,mois) { // au lieu de tout faire en une ligne avec // return( jour - 1 + tableauDecalage[mois-1] ) // on détaille le calcul tabDec = tableauDecalage() duree = (jour-1) + tabDec[mois-1] return(duree) } // fin de fonction cej // ---------------------------------------------------------------------------- function democej() { laDuree = cej(1,2) ; document.getElementById("cejxmp1").innerHTML = laDuree ; document.getElementById("cejxmp2").innerHTML = cej(2,3) ; } // fin de fonction democej // ---------------------------------------------------------------------------- function cejs(jour,mois,unite) { duree = cej(jour,mois) // on a une durée en jour pour "j" ; // si unite="s" il faut convertir en semaines complètes (division entière par 7) // sinon, on renvoie -1 if (unite=="j") { return(duree) } // fin si if (unite=="s") { return( Math.floor(duree/7) ) } // fin si return(-1) } // fin de fonction cejs // ---------------------------------------------------------------------------- function democejs() { document.getElementById("cejsxmp1").innerHTML = cejs(1,2,"j") ; document.getElementById("cejsxmp2").innerHTML = cejs(1,2,"s") ; document.getElementById("cejsxmp3").innerHTML = cejs(2,3,"s") ; document.getElementById("cejsxmp4").innerHTML = cejs(2,3,"autre chose") ; } // fin de fonction democejs // ---------------------------------------------------------------------------- function cejs2() { // valeurs par défaut j = 1 // premier m = 1 // janvier u = "j" // durée en jours // s'il n'y a qu'un argument, c'est une unité de durée // jour et mois doivent correspondre à la date courante // s'il y en a trois, c'est jour, mois, unite if (arguments.length==1) { u = arguments[0] auj = new Date() j = auj.getDate() m = auj.getMonth() + 1 } // fin de si if (arguments.length==3) { j = arguments[0] m = arguments[1] u = arguments[2] } // fin de si // pour debug if (console.debug) { console.debug(" j = "+j+" m = "+m+" u = "+u) } // fin si // on utilise comme codes d'ereur // -1 si erreur sur le jour // -20 si erreur sur le mois // -300 si erreur sur l'unité de durée // et on cumule ensuite, en cas d'erreurs multiples errJour = 0 errMois = 0 errUnit = 0 // pour tester si j est un entier, une expression régulière, c'est bien // attention : on ne vérifie pas si on est bien dans un jour possible du mois, // comme le 30 février (voir cejs3 pour cela) reInt = new RegExp("^[0-9]+$") // cette expression régulière renvoie vrai pour un entier positif ou nul cnd1 = reInt.test(j) cnd2 = j>0 cnd3 = j<32 if (!( cnd1 && cnd2 && cnd3 )) { errJour = -1 } // fin si cnd1 = reInt.test(m) cnd2 = m>0 cnd3 = m<13 if (!(cnd1&&cnd2&&cnd3)) { errMois = -20 } // fin si if (!((u=="j")||(u=="s"))) { errUnit = -300 } erreur = errJour + errMois + errUnit // s'il n'y a pas d'erreur, on peut utiliser cejs if (erreur<0) { return(erreur) } else { return(cejs(j,m,u)) } // fin de si } // fin de fonction cejs2 // ---------------------------------------------------------------------------- function democejs2() { document.getElementById("cejs2xmp1").innerHTML = cejs2(2,3,"j") ; document.getElementById("cejs2xmp2").innerHTML = cejs2("j") ; document.getElementById("cejs2xmp3").innerHTML = cejs2(40,3,"t") ; document.getElementById("cejs2xmp4").innerHTML = cejs2(30,2,"j") ; } // fin de fonction democejs2 // ---------------------------------------------------------------------------- function cejs3() { // valeurs par défaut j = 1 // premier m = 1 // janvier u = "j" // durée en jours // s'il n'y a qu'un argument, c'est une unité de durée // jour et mois doivent correspondre à la date courante // s'il y en a trois, c'est jour, mois, unite if (arguments.length==1) { u = arguments[0] auj = new Date() j = auj.getDate() m = auj.getMonth() + 1 } // fin de si if (arguments.length==3) { j = arguments[0] m = arguments[1] u = arguments[2] } // fin de si // pour debug if (console.debug) { console.debug(" j = "+j+" m = "+m+" u = "+u) } // fin si // on utilise comme codes d'ereur // -1 si erreur sur le jour // -20 si erreur sur le mois // -300 si erreur sur l'unité de durée // et on cumule ensuite, en cas d'erreurs multiples errJour = 0 errMois = 0 errUnit = 0 // pour tester si j est un entier, une expression régulière, c'est bien reInt = new RegExp("^[0-9]+$") // cette expression régulière renvoie vrai pour un entier positif ou nul cnd1 = reInt.test(j) cnd2 = j>0 cnd3 = j<32 if (!(cnd1&&cnd2&&cnd3)) { errJour = -1 } // fin si cnd1 = reInt.test(m) cnd2 = m>0 cnd3 = m<13 if (!(cnd1&&cnd2&&cnd3)) { errMois = -20 } // fin si if (errMois==0) { // pour bien tester la correspondance entre numéro de mois et nombre de jours, // on peut utiliser un tableau de numéros et de mois et de nombre de jours numMois = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12) jrpMois = new Array(0,30,28,31,30,31,30,31,31,30,31,30,31) if (j>jrpMois[m]) { errMois = -30 } } // fin si if (!((u=="j")||(u=="s"))) { errUnit = -300 } erreur = errJour + errMois + errUnit // s'il n'y a pas d'erreur on peut utiliser cejs if (erreur<0) { return(erreur) } else { return(cejs(j,m,u)) } // fin de si } // fin de fonction cejs3 // ---------------------------------------------------------------------------- function democejs3() { document.getElementById("cejs3xmp1").innerHTML = cejs3(2,3,"j") ; document.getElementById("cejs3xmp2").innerHTML = cejs3("j") ; document.getElementById("cejs3xmp3").innerHTML = cejs3(40,3,"t") ; document.getElementById("cejs3xmp4").innerHTML = cejs3(30,2,"j") ; } // fin de fonction democejs3 // ---------------------------------------------------------------------------- function cejs4(jour,mois) { duree = cej(jour,mois) // on renvoie un tableau : // indice 0, durée en jours // indice 1, durée en semaines tabDuree = new Array( duree, Math.floor(duree/7) ) return( tabDuree) } // fin de fonction cejs4 // ---------------------------------------------------------------------------- function democejs4() { document.getElementById("cejs4xmp1").innerHTML = cejs4(2,3)[0] ; document.getElementById("cejs4xmp2").innerHTML = cejs4(2,3)[1] ; } // fin de fonction democejs4 // ###################################################################### // fonctions annexes utilsiées : // ###################################################################### function addEvent(obj, evType, fn){ if (obj.addEventListener){ obj.addEventListener(evType, fn, false); return true; } else if (obj.attachEvent){ var r = obj.attachEvent("on"+evType, fn); return r; } else { return false; } } // # fin de function addEvent // ###################################################### function array2table(tableau,idt) { // ###################################################### // on passe d'un tableau Javascript (array) // à un tableau XHTML (<table>) // habillage du tableau : bordeau en mode collapse, colonne 1 centrée // l'élément table est créé en mémoire puis renvoyé, // on peut l'insérer ensuite avec appendChild() tab = document.createElement("table") ; tab.setAttribute("id",idt) ; tab.setAttribute("cellpadding",5) ; tab.setAttribute("cellspacing",5) ; tab.setAttribute("border",1) ; tab.setAttribute("class","collapse") ; nblig = tableau.length etr = document.createElement("tr") ; eth1 = document.createElement("th") ; txt1 = document.createTextNode("num") ; eth1.setAttribute("align","center") ; eth1.appendChild(txt1) ; etr.appendChild(eth1) ; eth2 = document.createElement("th") ; txt2 = document.createTextNode("mot") ; eth2.appendChild(txt2) ; etr.appendChild(eth2) ; tab.appendChild(etr) ; for (var ilig=0 ; ilig < nblig ; ilig++) { etr = document.createElement("tr") ; etd1 = document.createElement("td") ; etd1.setAttribute("align","center") ; txt1 = document.createTextNode(ilig+1) etd1.appendChild(txt1) ; etr.appendChild(etd1) ; etd2 = document.createElement("td") ; txt2 = document.createTextNode(tableau[ilig]) etd2.appendChild(txt2) ; etr.appendChild(etd2) ; tab.appendChild(etr) ; } ; // fin pour ilig return(tab) } ; // fin de fonction array2table // ######################################################
Retour à la page principale de (gH)