Suppress° des "s" aux H:min:sec cpte a rebour

[Résolu/Fermé]
Signaler
-
 PITCHOUNE -
Bonjour,

Je reviens vous solliciter a nouveau pour modifier l'affichage de mon compte a rebours.
Celui-ci fonctionne mais je souhaite le perfectionner et retirer les "s" a jours, heures, minutes et secondes quand il n'y a pas besoin.

je vous remercie a l'avance pour le temps consacre.


Je vous joins mon script ci-dessous:

<label id="Compte"></label>
<script type="text/JavaScript">
var Affiche=document.getElementById("Compte");
function Rebour() {
var date1 = new Date();
var date2 = new Date ("Nov 26 00:00:00 2010");
var sec = (date2 - date1) / 1000;
var n = 24 * 3600;
if (sec > 0) {
j = Math.floor (sec / n);
h = Math.floor ((sec - (j * n)) / 3600);
mn = Math.floor ((sec - ((j * n + h * 3600))) / 60);
sec = Math.floor (sec - ((j * n + h * 3600 + mn * 60)));
Affiche.innerHTML = " " + j +" jours "+ h +" heures "+ mn +" minutes "+ sec + " secondes ";
window.status = " " + j +" j "+ h +" h "+ mn +" min "+ sec + " s ";
}
tRebour=setTimeout ("Rebour();", 1000);
}
Rebour();
document.getElementById('Compte').innerHTML="Mon texte !";
</script>

14 réponses

Messages postés
1669
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
Bon, voici le code :

<FORM><body> 
<label id="Compte"></label> 
<script type='text/javascript'> 
var Affiche=document.getElementById("Compte"); 
var a,j,h,mn; 
var dateexpire = new Date ("Nov 29 11:28:00 2010"); 
var n = 24 * 3600; 
function Rebour() { 
 var dateMaintenant = new Date(); 
 var sec = (dateexpire - dateMaintenant) / 1000; 
 if (sec > 1) { 
  j = Math.floor (sec / n); 
  h = Math.floor ((sec - (j * n)) / 3600); 
  mn = Math.floor ((sec - ((j * n + h * 3600))) / 60); 
  sec = Math.floor (sec - ((j * n + h * 3600 + mn * 60))); 
  Affiche.innerHTML = " " + j +" jour" + S_ou_pas_s(j) + " " + h +" heure" + S_ou_pas_s(h) + " " + mn +" minute"+ S_ou_pas_s(mn) + " " + sec + " seconde" + S_ou_pas_s(sec); 
  window.setTimeout("Rebour();",1000); 
 }else{ 
  Affiche.innerHTML ="Temps écoulé"; 
 } 
} 

Rebour(); 

function S_ou_pas_s(nb){ 
if (nb>1){ 
return "s";} 
else{ 
return "";} 
} 
</script> 
</body></form>

Quelques explications :
-document.getElementById ne fonction que si <form> et <body> sont déclarés
-on appel Rebour() dans le js, et le settimeout dans la function Rebour... car settimeout appel une seule fois la function passée en argument tous les X milisecondes.
-Mise à jours de "compte" par "temps écoulé" quand c'est fini

Voili voilà...

Testé, et approuvé ;)

N'hésitez pas à poser des questions, il vaut mieux être con 5 min que le rester toute sa vie ;)
N'oubliez pas de mettre votre Post en 'Résolu' quand c'est le cas :-D
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
2735
Date d'inscription
jeudi 21 mai 2009
Statut
Contributeur
Dernière intervention
2 février 2014
216
Salut,

Un simple if devrait régler ton problème. Si il y'a plusieurs secondes/minutes/heures/jours, on mets un S, sinon, on n'en met pas.

Cordialement--
Si un jour, l'envie de travailler te prends, assied-toi et attends que ca passe ...
Les boulets, on ne les aime que dans les quotes ! Merci
Merci pour ta reponse mais pourrais-tu me donner plus d'info quant a la redaction du script?
Messages postés
2735
Date d'inscription
jeudi 21 mai 2009
Statut
Contributeur
Dernière intervention
2 février 2014
216
Je ne suis pas un pro du JavaScript, désolé. J'avais trouvé un script de compte à rebours sur le net que j'avais légèrement modifié pour qu'il tourne comme je veux.
Si tu veux, je peux te l'envoyer en entier, mais je suis incapable de te donner LE bout de code qu'il te faut.

Cordialement
Moi non plus je ne suis pas experte en la matiere .. je veux bien que tu m'envoyes ton script, je pourrais le comparer avec ce que j'ai deja.

Merci encore pour ta reponse rapide.
Messages postés
1669
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
Bonjour :)


<label id="Compte"></label>
<script type="text/JavaScript">
var Affiche=document.getElementById("Compte");
function Rebour() {
var date1 = new Date();
var date2 = new Date ("Nov 26 00:00:00 2010");
var sec = (date2 - date1) / 1000;
var n = 24 * 3600;
if (sec > 0) {
j = Math.floor (sec / n);
h = Math.floor ((sec - (j * n)) / 3600);
mn = Math.floor ((sec - ((j * n + h * 3600))) / 60);
sec = Math.floor (sec - ((j * n + h * 3600 + mn * 60)));
Affiche.innerHTML = " " + j +" jour " + S_ou_pas_s(j) + h +" heure " + S_ou_pas_s(h) + mn +" minute "+ S_ou_pas_s(mn) + sec + " seconde " + S_ou_pas_s(sec);
window.status = " " + j +" j "+ h +" h "+ mn +" min "+ sec + " s ";
}
tRebour=setTimeout ("Rebour();", 1000);
}
Rebour();
document.getElementById('Compte').innerHTML="Mon texte !";
</script>

fonction S_ou_pas_s(nb){
if (nb<10){
return "s";}
else{
return"";}
}



et voili :)
Bonsoir Jjsteing,

Je viens de lire ton message et te remercie pour ton aide et ton script mais celui-ci ne fonctionne pas. Lorsque je rajoute le script correspondant a la suppression des "s"a la fin du script deja existant, celui-ci affiche directement le script :
"fonction S_ou_pas_s(nb){
if (nb<10){
return "s";}
else{
return"";}
}

apres le compte a rebours.

Est-ce que l'emplacement est correct?

Merci pour ton aide
Messages postés
1669
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
oups.. function, pas fonction !! ;)
Bonsoir jjsteing,

Merci pour ton message, j''ai modifie mais cela ne fonctionne tjrs pas.

J'ai tjrs le script qui s'affiche apres mon cpte a rebours.

Merci pour ton aide
Messages postés
11
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
26 novembre 2010

<label id="Compte"></label>
<script type="text/JavaScript">
var Affiche=document.getElementById("Compte");
function Rebour() {
var date1 = new Date();
var date2 = new Date ("Nov 26 00:00:00 2010");
var sec = (date2 - date1) / 1000;
var n = 24 * 3600;
if (sec > 0) {
j = Math.floor (sec / n);
h = Math.floor ((sec - (j * n)) / 3600);
mn = Math.floor ((sec - ((j * n + h * 3600))) / 60);
sec = Math.floor (sec - ((j * n + h * 3600 + mn * 60)));
Affiche.innerHTML = " " + j +" jour " + S_ou_pas_s(j) + h +" heure " + S_ou_pas_s(h) + mn +" minute "+ S_ou_pas_s(mn) + sec + " seconde " + S_ou_pas_s(sec);
window.status = " " + j +" j "+ h +" h "+ mn +" min "+ sec + " s ";
}
tRebour=setTimeout ("Rebour();", 1000);
}
Rebour();
document.getElementById('Compte').innerHTML="Mon texte !";
</script>
Bonjour,

cela ne fonctionne tjrs pas. Est-ce qu'avec un script en if cela marcherait-il mieux comme :

if(days != 0){out += days +" day"+((days!=1)?"s":"")+", ";}
if(days != 0 || hours != 0){out += hours +" hour"+((hours!=1)?"s":"")+", ";}
if(days != 0 || hours != 0 || mins != 0){out += mins +" minute"+((mins!=1)?"s":"")+", ";}
out += secs +" seconds";

le pb etant que je ne sais pas ou l'integrer dans mon script.

Qu'en penses-tu??
Messages postés
1669
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
Ah non !!

ca vient de la balise </script> que tu doit mettre après ma function... (déplace la)

Que j suis nul parfois !!!

Bon, apparement, ca marche quand meme pas :(

Je te regarde ce bout de code ce soir...

@++
N'hésitez pas à poser des questions, il vaut mieux être con 5 min que le rester toute sa vie ;)
N'oubliez pas de mettre votre Post en 'Résolu' quand c'est le cas :-D
Bonjour jjsteing,

Je n'ai pas eu le temps auparavant de regarder ton script et finalement celui-ci marche !!!
Je suis super contente !!
Je te remercie bcp pour ton aide et ta patience.

Je met cette discussion en resolue !!
RESOLUE !!!
Messages postés
1669
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
hihihi :)

pis c est marrant, pitchoune, c est le surnom de ma femme :)

Content que ce soit résolu :)

@++
Bonjour,

Je reviens sur ce forum !!
j'ai un autre probleme d'affichage mainteant.
En fait j'ai plusieurs comptes a rebours sur une meme page mais seulement un seul defile correctement. Les autres restent figes. Je ne sais ce qu'il faut modifier.

Est-ce que qqn pourrait m'aider. j'ai beau chercher lsur le net mais je ne trouve absolument rien qui puisse m'aider. Il semblerait que cela provienne d'une fonction qui empeche les autres de fonctionner.

Voila mon script :

<label id="Compte1"></label>
<script type='text/javascript'>
var Affiche=document.getElementById("Compte1");
var a,j,h,mn;
var dateexpire = new Date ("Dec 19 00:00:00 2010");
var n = 24 * 3600;
function Rebour() {
var dateMaintenant = new Date();
var sec = (dateexpire - dateMaintenant) / 1000;
if (sec > 1) {
j = Math.floor (sec / n);
h = Math.floor ((sec - (j * n)) / 3600);
mn = Math.floor ((sec - ((j * n + h * 3600))) / 60);
sec = Math.floor (sec - ((j * n + h * 3600 + mn * 60)));
Affiche.innerHTML = " " + j +" jour" + S_ou_pas_s(j) + " " + h +" heure" + S_ou_pas_s(h) + " " + mn +" minute"+ S_ou_pas_s(mn) + " " + sec + " seconde" + S_ou_pas_s(sec);
var timer =setInterval('Rebour()',1000);
}else{
Affiche.innerHTML ="Cette Vente est maintenant terminée !";
}
}

Rebour();

function S_ou_pas_s(nb){
if (nb>1){
return "s";}
else{
return "";}
}
</script>