yvanb Posted February 24, 2013 Share Posted February 24, 2013 (edited) Bonjour à tous, alors voila, je suis un gros incompétent en JavaScript et je n'y connais vraiment rien du tout ! J'ai un compte à rebours en js avec ce code ci : <script type = "text/javascript"> function getSeconds() { var now = new Date(); var nowtime= now.getTime(); // time now in milliseconds var countdowntime = new Date(now.getFullYear(),now.getMonth(),now.getDate(),14,00,00); // countdowntime - configuration de l'heure du compteur, ex. 14,30,0 var atime = countdowntime.getTime(); var diff = parseInt((atime - nowtime)/1000); if (diff >0) { cday = now.getDay(); } else { cday = now.getDay(); } if (cday == 0) { cday += 1; diff += (86400 * 1);} // si le jour est Dimache, livraison pas possible ce même jour, alors on rajoute +1(jours), car Lundi pareil, donc livraison pour Mardi else if (cday == 5) { cday += 3; diff += (86400 * 3); } // si le jour est Vendredi et que l'heure est dépassé, alors on rajoute +4(jours), car Samedi,Dimanche et Lundi pas de livraison, donc livraison pour Mardi else if (cday == 6) {cday += 2; diff += (86400 * 2) } // // si le jour est Samedi, livraison pas possible ce même jour, alors on rajoute +3(jours), car Lundi pareil, donc livraison pour Mardi else if (cday == 1) {cday += 1; diff += (86400 * 1) } // si le jour est Lundi, livraison pas possible ce même jour, alors on rajoute +1(jours), donc livraison pour Mardi if (cday < 0) { cday += 1; } // si le conteur est arrivé à la fin, on rajoute 1 jours if (diff <= 0) { diff += (86400 * 1) } startTimer (diff); } function startTimer(secs) { timeInSecs = parseInt(secs); ticker = setInterval("tick()",1000); tick(); //affichage du compteur et démarrage immédiat } function tick() { var secs = timeInSecs; if (secs>0) { timeInSecs--; } else { clearInterval(ticker); //arret du compte à 0 getSeconds(); // et il recommence } var days = Math.floor(secs/86400); secs %= 86400; var hours= Math.floor(secs/3600); secs %= 3600; var mins = Math.floor(secs/60); secs %= 60; var result = "<div class='jour'>" + days + "j</div>" + "<div class='heure'>" + ((hours < 10 ) ? "":"" ) + hours + "h</div>" + "<div class='minute'>"+ ( (mins < 10) ? "0" : "" ) + mins + "m</div>" + "<div class='seconde'>" + ( (secs < 10) ? "0":"" ) + secs + "s</div>"; document.getElementById("countdown").innerHTML = result; var result = "pour une livraison ce <span style='color:red;font-weight:bold;text-transform:uppercase;'>" + days + "</span>"; document.getElementById("jour").innerHTML = result; } </script> L'affichage du compteur s’effectue par ceci : <body onload= "getSeconds();"> <span id="countdown"> </span> <span id="jour"> </span> Je sais pas si le code est propre ou autres, mais il fonctionne, il me permet de décompter une heure précise, et si l'heure est dépasse, suivant le jour que l'on est, il rajoute +1 jour ou +2 etc... C'est pour le calcule de la livraison. Donc, le compteur fonctionne, mais comme vous pouvez le voir, j'ai une ligne "pour une livraison ce..." Il faut que je calcule la date du jour, si on est vendredi alors +3jrs, samedi +2jrs, si dimanche +1jr et affiche le jour en question en toute lettre, ce que je n'arrive pas à faire... Sachant qu'il faut également prendre en compte l'heure, c'est à dire que si 14h00 est dépassé, et qu'on est vendredi, la prochaine livraison aura lieu mardi... Si on est lundi, se sera pour mardi etc... L'autre partie du problème, c'est qu'il me faut également un doublon du script, car le but est d'avoir deux compteur, pour 2 transporteur différents. En gros, j'essaye de reproduire les deux compteur qui se trouve sur ce site (1er bloc de gauche du site) pour ensuite en faire un module prestashop Merci pour votre aide Edited February 24, 2013 by yvanb (see edit history) Link to comment Share on other sites More sharing options...
xavier-fr-uk-vn Posted May 6, 2014 Share Posted May 6, 2014 salut, tu as trouver une solution ? Link to comment Share on other sites More sharing options...
loulou66 Posted May 6, 2014 Share Posted May 6, 2014 (edited) coucou c'est simple vu que tu as deja tes condition avec cday if (cday == 0 || cday == 1 ||cday == 5 || cday == 6){ var daylivraison = 'Mardi'} else if (cday == 2){var daylivraison = 'Mercredi'} else if (cday == 3){var daylivraison = 'Jeudi'} else if (cday == 4){var daylivraison = 'Vendredi'} var result = "<div class='jour'>" + days + "j</div>" + "<div class='heure'>" + ((hours < 10 ) ? "":"" ) + hours + "h</div>" + "<div class='minute'>"+ ( (mins < 10) ? "0" : "" ) + mins + "m</div>" + "<div class='seconde'>" + ( (secs < 10) ? "0":"" ) + secs + "s</div>"; document.getElementById("countdown").innerHTML = result; var result = "pour une livraison ce <span style='color:red;font-weight:bold;text-transform:uppercase;'>" + daylivraison + "</span>"; document.getElementById("jour").innerHTML = result; } @++ Edit: dls je pensais que tu voulais mettre les jours en lettres ^^ Loulou66 Edited May 6, 2014 by loulou66 (see edit history) Link to comment Share on other sites More sharing options...
loulou66 Posted May 6, 2014 Share Posted May 6, 2014 Coucou sinon pour ton module tu as un Joli JS gratuit http://flipclockjs.com/ je l'ai utiliser pour ce module dont tu peut prendre exemple http://www.prestashop.com/forums/topic/297415-modulemultislides-en-css/ dans le php a la derniere fonction hookExtraRight du module dans les variable $now= date du jour $to=date fin du compteur $count= diff entre $now et $to pour le compteur en FO et dans le productextra.tpl le JS pour le compteur donc tu peut faire tes même conditions de verif du jour avec $now et envoyer le $count et un $daylivraison qui afficehras le jour en letrres dans ton module en FO @++ Loulou66 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now