Jump to content

Recommended Posts

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 by yvanb (see edit history)
Link to comment
Share on other sites

  • 1 year later...

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 by loulou66 (see edit history)
Link to comment
Share on other sites

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...