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 à la page principale de (gH)