Valid XHTML    Valid CSS2    

Listing du fichier solution2012.js

 

00001     // (gH) -_- solution2012.js ; TimeStamp (unix) : 28 Mai 2012 vers 10:49
00002     
00003     // voici ce qui sera exécuté quand la page est chargée :
00004     
00005     addEvent(window, 'load', q1);
00006     addEvent(window, 'load', demotableau1);
00007     addEvent(window, 'load', demotableau2);
00008     addEvent(window, 'load', democej);
00009     addEvent(window, 'load', democejs);
00010     addEvent(window, 'load', democejs2);
00011     addEvent(window, 'load', democejs3);
00012     addEvent(window, 'load', democejs4);
00013     
00014     // ######################################################
00015     
00016     function q1() {
00017     
00018      window.document.getElementById("txt1").innerHTML = "é".toUpperCase() ;
00019     
00020     } // fin de fonction q1
00021     
00022     // ----------------------------------------------------------------------------
00023     
00024     function demotableau1() {
00025     
00026     tablo1 = "un petit chat".split(" ") ;
00027     table1 = array2table(tablo1,"tab1") ;
00028     document.getElementById("divtableau1").appendChild(table1) ;
00029     
00030     } // fin de fonction demotableau1
00031     
00032     // ----------------------------------------------------------------------------
00033     
00034     function demotableau2() {
00035     
00036     tablo2 = "un petit chat".split(/\s+/) ;
00037     table2 = array2table(tablo2,"tab2") ;
00038     document.getElementById("divtableau2").appendChild(table2) ;
00039     
00040     // on aurait pu écrire
00041     //
00042     // document.getElementById("divtableau2").appendChild(
00043     // array2table( "un petit chat".split(/\s+/) ,"tab2")
00044     // ) ;
00045     //
00046     // ou meme
00047     // document.getElementById("divtableau2").appendChild( array2table( "un petit chat".split(/\s+/) ,"tab2") )
00048     //
00049     // mais je préfére décomposer
00050     
00051     } // fin de fonction demotableau2
00052     
00053     // ----------------------------------------------------------------------------
00054     
00055     function tableauDecalage() {
00056     
00057     // pour savoir combien de jours sont écoulés pour une date donnée,
00058     // on utilise un tableau qui comptabilise les durées écoulées en fin de mois
00059     //
00060     // mois J F M A M J J A S 0 N D
00061     // jours par mois 31 28 31 30 31 30 31 31 30 31 30 31
00062     // cumul 31 59 90 120 151 182 212 243 273 304 334 365
00063     // on met 0 comme premier décalage, cela permet d'utiliser directement
00064     // le numéro du mois comme indice
00065     
00066     return( new Array(0,31,59,90,120,151,182,212,243,273,304,334,365) )
00067     
00068     } // fin de fonction tableauDecalage
00069     
00070     // ----------------------------------------------------------------------------
00071     
00072     function cej(jour,mois) {
00073     
00074     // au lieu de tout faire en une ligne avec
00075     // return( jour - 1 + tableauDecalage[mois-1] )
00076     // on détaille le calcul
00077     
00078     tabDec = tableauDecalage()
00079     duree = (jour-1) + tabDec[mois-1]
00080     return(duree)
00081     
00082     } // fin de fonction cej
00083     
00084     // ----------------------------------------------------------------------------
00085     
00086     function democej() {
00087     
00088     laDuree = cej(1,2) ;
00089     document.getElementById("cejxmp1").innerHTML = laDuree ;
00090     
00091     document.getElementById("cejxmp2").innerHTML = cej(2,3) ;
00092     
00093     } // fin de fonction democej
00094     
00095     // ----------------------------------------------------------------------------
00096     
00097     function cejs(jour,mois,unite) {
00098     
00099     duree = cej(jour,mois)
00100     
00101     // on a une durée en jour pour "j" ;
00102     // si unite="s" il faut convertir en semaines complètes (division entière par 7)
00103     // sinon, on renvoie -1
00104     
00105     if (unite=="j") {
00106      return(duree)
00107     } // fin si
00108     
00109     if (unite=="s") {
00110      return( Math.floor(duree/7) )
00111     } // fin si
00112     
00113     return(-1)
00114     
00115     } // fin de fonction cejs
00116     
00117     // ----------------------------------------------------------------------------
00118     
00119     function democejs() {
00120     
00121     document.getElementById("cejsxmp1").innerHTML = cejs(1,2,"j") ;
00122     document.getElementById("cejsxmp2").innerHTML = cejs(1,2,"s") ;
00123     document.getElementById("cejsxmp3").innerHTML = cejs(2,3,"s") ;
00124     document.getElementById("cejsxmp4").innerHTML = cejs(2,3,"autre chose") ;
00125     
00126     } // fin de fonction democejs
00127     
00128     // ----------------------------------------------------------------------------
00129     
00130     function cejs2() {
00131     
00132     // valeurs par défaut
00133     
00134     j = 1 // premier
00135     m = 1 // janvier
00136     u = "j" // durée en jours
00137     
00138     // s'il n'y a qu'un argument, c'est une unité de durée
00139     // jour et mois doivent correspondre à la date courante
00140     
00141     // s'il y en a trois, c'est jour, mois, unite
00142     
00143     if (arguments.length==1) {
00144      u = arguments[0]
00145      auj = new Date()
00146      j = auj.getDate()
00147      m = auj.getMonth() + 1
00148     } // fin de si
00149     
00150     if (arguments.length==3) {
00151      j = arguments[0]
00152      m = arguments[1]
00153      u = arguments[2]
00154     } // fin de si
00155     
00156     // pour debug
00157     
00158     if (console.debug) {
00159      console.debug(" j = "+j+" m = "+m+" u = "+u)
00160     } // fin si
00161     
00162     // on utilise comme codes d'ereur
00163     // -1 si erreur sur le jour
00164     // -20 si erreur sur le mois
00165     // -300 si erreur sur l'unité de durée
00166     // et on cumule ensuite, en cas d'erreurs multiples
00167     
00168     errJour = 0
00169     errMois = 0
00170     errUnit = 0
00171     
00172     // pour tester si j est un entier, une expression régulière, c'est bien
00173     // attention : on ne vérifie pas si on est bien dans un jour possible du mois,
00174     // comme le 30 février (voir cejs3 pour cela)
00175     
00176     reInt = new RegExp("^[0-9]+$") // cette expression régulière renvoie vrai pour un entier positif ou nul
00177     
00178     cnd1 = reInt.test(j)
00179     cnd2 = j>0
00180     cnd3 = j<32
00181     if (!( cnd1 && cnd2 && cnd3 )) {
00182      errJour = -1
00183     } // fin si
00184     
00185     cnd1 = reInt.test(m)
00186     cnd2 = m>0
00187     cnd3 = m<13
00188     if (!(cnd1&&cnd2&&cnd3)) {
00189      errMois = -20
00190     } // fin si
00191     
00192     if (!((u=="j")||(u=="s"))) { errUnit = -300 }
00193     
00194     erreur = errJour + errMois + errUnit
00195     
00196     // s'il n'y a pas d'erreur, on peut utiliser cejs
00197     
00198     if (erreur<0) {
00199      return(erreur)
00200     } else {
00201      return(cejs(j,m,u))
00202     } // fin de si
00203     
00204     } // fin de fonction cejs2
00205     
00206     // ----------------------------------------------------------------------------
00207     
00208     function democejs2() {
00209     
00210     document.getElementById("cejs2xmp1").innerHTML = cejs2(2,3,"j") ;
00211     document.getElementById("cejs2xmp2").innerHTML = cejs2("j") ;
00212     document.getElementById("cejs2xmp3").innerHTML = cejs2(40,3,"t") ;
00213     document.getElementById("cejs2xmp4").innerHTML = cejs2(30,2,"j") ;
00214     
00215     } // fin de fonction democejs2
00216     
00217     // ----------------------------------------------------------------------------
00218     
00219     function cejs3() {
00220     
00221     // valeurs par défaut
00222     
00223     j = 1 // premier
00224     m = 1 // janvier
00225     u = "j" // durée en jours
00226     
00227     // s'il n'y a qu'un argument, c'est une unité de durée
00228     // jour et mois doivent correspondre à la date courante
00229     
00230     // s'il y en a trois, c'est jour, mois, unite
00231     
00232     if (arguments.length==1) {
00233      u = arguments[0]
00234      auj = new Date()
00235      j = auj.getDate()
00236      m = auj.getMonth() + 1
00237     } // fin de si
00238     
00239     if (arguments.length==3) {
00240      j = arguments[0]
00241      m = arguments[1]
00242      u = arguments[2]
00243     } // fin de si
00244     
00245     // pour debug
00246     
00247     if (console.debug) {
00248      console.debug(" j = "+j+" m = "+m+" u = "+u)
00249     } // fin si
00250     
00251     // on utilise comme codes d'ereur
00252     // -1 si erreur sur le jour
00253     // -20 si erreur sur le mois
00254     // -300 si erreur sur l'unité de durée
00255     // et on cumule ensuite, en cas d'erreurs multiples
00256     
00257     errJour = 0
00258     errMois = 0
00259     errUnit = 0
00260     
00261     // pour tester si j est un entier, une expression régulière, c'est bien
00262     
00263     reInt = new RegExp("^[0-9]+$") // cette expression régulière renvoie vrai pour un entier positif ou nul
00264     
00265     cnd1 = reInt.test(j)
00266     cnd2 = j>0
00267     cnd3 = j<32
00268     if (!(cnd1&&cnd2&&cnd3)) {
00269      errJour = -1
00270     } // fin si
00271     
00272     cnd1 = reInt.test(m)
00273     cnd2 = m>0
00274     cnd3 = m<13
00275     if (!(cnd1&&cnd2&&cnd3)) {
00276      errMois = -20
00277     } // fin si
00278     
00279     if (errMois==0) {
00280     
00281      // pour bien tester la correspondance entre numéro de mois et nombre de jours,
00282      // on peut utiliser un tableau de numéros et de mois et de nombre de jours
00283     
00284      numMois = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12)
00285      jrpMois = new Array(0,30,28,31,30,31,30,31,31,30,31,30,31)
00286     
00287      if (j>jrpMois[m]) { errMois = -30 }
00288     
00289     } // fin si
00290     
00291     if (!((u=="j")||(u=="s"))) { errUnit = -300 }
00292     
00293     erreur = errJour + errMois + errUnit
00294     
00295     // s'il n'y a pas d'erreur on peut utiliser cejs
00296     
00297     if (erreur<0) {
00298      return(erreur)
00299     } else {
00300      return(cejs(j,m,u))
00301     } // fin de si
00302     
00303     } // fin de fonction cejs3
00304     
00305     // ----------------------------------------------------------------------------
00306     
00307     function democejs3() {
00308     
00309     document.getElementById("cejs3xmp1").innerHTML = cejs3(2,3,"j") ;
00310     document.getElementById("cejs3xmp2").innerHTML = cejs3("j") ;
00311     document.getElementById("cejs3xmp3").innerHTML = cejs3(40,3,"t") ;
00312     document.getElementById("cejs3xmp4").innerHTML = cejs3(30,2,"j") ;
00313     
00314     } // fin de fonction democejs3
00315     
00316     // ----------------------------------------------------------------------------
00317     
00318     function cejs4(jour,mois) {
00319     
00320     duree = cej(jour,mois)
00321     
00322     // on renvoie un tableau :
00323     // indice 0, durée en jours
00324     // indice 1, durée en semaines
00325     
00326     tabDuree = new Array( duree, Math.floor(duree/7) )
00327     
00328     return( tabDuree)
00329     
00330     } // fin de fonction cejs4
00331     
00332     // ----------------------------------------------------------------------------
00333     
00334     function democejs4() {
00335     
00336     document.getElementById("cejs4xmp1").innerHTML = cejs4(2,3)[0] ;
00337     document.getElementById("cejs4xmp2").innerHTML = cejs4(2,3)[1] ;
00338     
00339     } // fin de fonction democejs4
00340     
00341     // ######################################################################
00342     
00343     // fonctions annexes utilsiées :
00344     
00345     // ######################################################################
00346     
00347     function addEvent(obj, evType, fn){
00348      if (obj.addEventListener){
00349      obj.addEventListener(evType, fn, false);
00350      return true;
00351      } else if (obj.attachEvent){
00352      var r = obj.attachEvent("on"+evType, fn);
00353      return r;
00354      } else {
00355      return false;
00356      }
00357     } // # fin de function addEvent
00358     
00359     // ######################################################
00360     
00361     function array2table(tableau,idt) {
00362     
00363     // ######################################################
00364     
00365     // on passe d'un tableau Javascript (array)
00366     // à un tableau XHTML (<table>)
00367     // habillage du tableau : bordeau en mode collapse, colonne 1 centrée
00368     // l'élément table est créé en mémoire puis renvoyé,
00369     // on peut l'insérer ensuite avec appendChild()
00370     
00371     tab = document.createElement("table") ;
00372     tab.setAttribute("id",idt) ;
00373     tab.setAttribute("cellpadding",5) ;
00374     tab.setAttribute("cellspacing",5) ;
00375     tab.setAttribute("border",1) ;
00376     tab.setAttribute("class","collapse") ;
00377     
00378     nblig = tableau.length
00379     
00380     etr = document.createElement("tr") ;
00381     eth1 = document.createElement("th") ;
00382     txt1 = document.createTextNode("num") ;
00383     eth1.setAttribute("align","center") ;
00384     eth1.appendChild(txt1) ;
00385     etr.appendChild(eth1) ;
00386     eth2 = document.createElement("th") ;
00387     txt2 = document.createTextNode("mot") ;
00388     eth2.appendChild(txt2) ;
00389     etr.appendChild(eth2) ;
00390     tab.appendChild(etr) ;
00391     
00392     for (var ilig=0 ; ilig < nblig ; ilig++) {
00393      etr = document.createElement("tr") ;
00394      etd1 = document.createElement("td") ;
00395      etd1.setAttribute("align","center") ;
00396      txt1 = document.createTextNode(ilig+1)
00397      etd1.appendChild(txt1) ;
00398      etr.appendChild(etd1) ;
00399      etd2 = document.createElement("td") ;
00400      txt2 = document.createTextNode(tableau[ilig])
00401      etd2.appendChild(txt2) ;
00402      etr.appendChild(etd2) ;
00403      tab.appendChild(etr) ;
00404     } ; // fin pour ilig
00405     
00406     return(tab)
00407     
00408     } ; // fin de fonction array2table
00409     
00410     // ######################################################

Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.

 

 

retour gH    Retour à la page principale de   (gH)