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

Résolu/Fermé
PITCHOUNE - 24 nov. 2010 à 17:45
 PITCHOUNE - 15 déc. 2010 à 17:28
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

jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
Modifié par jjsteing le 29/11/2010 à 08:37
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
a70m Messages postés 2763 Date d'inscription jeudi 21 mai 2009 Statut Contributeur Dernière intervention 2 février 2014 217
24 nov. 2010 à 20:33
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
0
Merci pour ta reponse mais pourrais-tu me donner plus d'info quant a la redaction du script?
0
a70m Messages postés 2763 Date d'inscription jeudi 21 mai 2009 Statut Contributeur Dernière intervention 2 février 2014 217
24 nov. 2010 à 22:33
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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.
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
25 nov. 2010 à 08:42
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 :)
0
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
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
25 nov. 2010 à 22:57
oups.. function, pas fonction !! ;)
0
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
0
francis2012 Messages postés 11 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 26 novembre 2010
26 nov. 2010 à 01:13
<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>
0
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??
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
Modifié par jjsteing le 26/11/2010 à 08:40
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
0
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 !!
0
RESOLUE !!!
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
6 déc. 2010 à 07:27
hihihi :)

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

Content que ce soit résolu :)

@++
0
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>
0