Décrivez ici votre problème ou ce que vous cherchez à faire.
Bonjour voila, j'ai créé un petit compteur qui se charge de compter le nombre de quart d'heures, de minutes et de secondes écoulé depuis son lancement, il fonctionne bien sauf que j'aimerais qu'il me fasse une notification de type alert a chaque quart d'heure écoulé, le problème est que dès que j'insère ma condition, il cesse de d'etre dynamique et l'alert ne s'effectue pas ,vos conseils sont plus que les bienvenue. ci-joint le code

Entoure<script>

window.onload = function () {

const text = document.querySelector('h3');

function chronometre(){

 const debut_du_chrono = 1698327535137;
 const heure_de_connexion= Date.now();

const temps_ecoule=Date.now()-1698327535137;
const quart_heure= Math.floor(temps_ecoule/(1000*60*15));
const minutes= Math.floor((temps_ecoule%(1000*60*15))/(1000*60));
const secondes=Math.floor ((temps_ecoule%(1000*60))/1000);
text.innerText =`${quart_heure}q ${minutes}m ${secondes}s`

 }

chronometre();
    const dure_ecoule= setInterval(()=>{chronometre()},1000);

 if (Math.floor(date.now()%(1000*60*15))=0){alert('sa fait 15')}

    } 

 </script>z votre code en utilisant "```" pour bien le mettre en forme. (ne copiez pas trop de code)

Ce que je veux

Décrivez ce que vous cherchez à obtenir.

Ce que j'obtiens

Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

28 réponses


dès que j'enlève la partie if (Math.floor(date.now()%(1000*60*15))=0){alert('sa fait 15')} il se remet a bien fonctionner, merci pour vos remarques et solutions

Il te faut un == ou === pour tester ta condition

if (Math.floor(date.now()%(1000*60*15))===0){alert('sa fait 15')} voilà ce que j'ai écris mais sa ne fonctionne toujours pas l'alert ne se déclenche pas

Il manque aussi un ; après le alert

EDIT :

→ Erreur de syntaxe également la fonction prend une majuscule : Date.now()

ah oui c'est vrai, je rectifie etje te fait signe

JRcode bonjour j'ai fait les rectifications, ajouté ; et modifié date en Date.now(); mais toujours pas d'alert

Alors il y a effectivement encore pas mal d'erreurs ^^
→ le "if" devrait être placé dans ta fonction chronometre
→ tu cherches à savoir quand Date.now() est divisible par 15', donc quand le reste (modulo %) de la division est nul, le Math.floor est inutile ici

merci d'aider la pauvre demoiselle en detresse que je suis, donc quel sont tes conseils

Le but c'est que tu cherches le plus possible par toi même mais voici qui devrait fonctionner :

<script>

window.onload = function () {

const text = document.querySelector('h3');

function chronometre(){

    const temps_ecoule=Date.now()-1698327535137;
    const temps_ecoule_sec=Math.floor(temps_ecoule/1000);

    const quart_heure= Math.floor(temps_ecoule/(1000*60*15));
    const minutes= Math.floor((temps_ecoule%(1000*60*15))/(1000*60));
    const secondes=Math.floor ((temps_ecoule%(1000*60))/1000);

    text.innerText =`${quart_heure}q ${minutes}m ${secondes}s`;

    if ((temps_ecoule_sec%(15*60))===0){alert('sa fait 15');}

}

chronometre();
    const dure_ecoule= setInterval(()=>{chronometre()},1000);

} 

</script>

J'ai mis le temps écoulé en secondes car ton chrono se rafraichit toutes les secondes et si tu cherches quand il s'est écoulé exactement 15minutes à la milliseconde prêt bah il se peut que la condition soit jamais vérifiée...

je fais de sacré effort crois moi, je me demande comment vous faites pour que les erreurs vous sautes aux yeux, mais tu as raison, moi ce que je veux c'est etre autonome, tant que je suis pas vraiment coincé, je cherche toujours a me debrouiller seul

je vais essayer ton code

C'est à force de faire les mêmes fautes justement ! je te dis pas le nombre de fois ou je suis resté des heures bloqué sur un bout de code à chercher sur internet pourquoi ça marchait pas alors qu'en réalité c'était une parenthèse mal placée quelque part !...

Après dit toi aussi qu'un ordinateur ça a beau être un outil puissant ça reste "con" et du coup faut être un peu dans le même état d'esprit quand on relit son code en se demandant ce que la machine va comprendre, et la on en revient toujours aux bases de la syntaxe et de l'algorithmique

ouuuuuuuuuuuuiiiiiiiiiiiiiiiiii JRcode, j'ai l'impression que plus le temps passe plus je deviens une chirurgienne du code, parce que sa frole la perfection le coding, une virgule oublié, une parenthèse de travers , une majuscule au mauvais endroit et c'est milles lignes qui ne fonctionnent plus, c'est incroyable, franchement chapeau bas a tous les programeurs vous avez beaucoup de mérite

Eh oui c'est exactement ça, tout est une question de détail, tu vas vite piger le truc aussi, ton code est pas mal sinon ;p
Bon courage !

franchement merci, je t'ai surnommé la boussole en passant vu que tu me guide encore merci, franchement je pensais que j'étais trop nul, et que le stéréotype voulant que l'informatique soit l'apanache des hommes était vrai mais sachant que toi aussi tu as eu ton lot de difficultés sa me rassure beaucoup et sa m'encourage ;-)

Hahaha merci :) Les difficultés je te rassure on en passe tous par là un moment ou à un autre mais y a rien d'insurmontable c'est que des 0 et des 1 au final, c'est juste une manière de penser et une rigueur à acquérir !

TON CODE FONCTIOOOOOOOOOOOOOOOOOOOONNNNNE L ALERT C EST DECLENCHEEEEE EEEEEEENNNNNNNFIIIIIIIIIIN MERCI LA BOUSSOLE,

mais qu'est ce qu'il clochait

tu as ajouté des crochets vers la derniere ligne, quand j'appel la fonction chrono??? c'etait sa???

en fait pour tout te dire l'aboutissement du chrono c'est qu'il puisse exécuter une tache toutes les 15 minutes , tache que je compte mettre a la place de alert(); par exemple meme si personne n'est connecté au site, si je voudrais envoyer des messages toutes les 15 minutes,est-ce que c'est possible? vu que js s'exécute coté client est-ce que sa veut dire que je dois utiliser un autre langage de programmation ou bien est-ce qu'il y a une astuce?il y a deux jours j'ai découverte une fonction appelé fetch, du coup je fais tout le traitement des données en php, et j'envoi fetch toutes les 15 minutes récupérer les résultats, le problème est que je sais pas par ou passer pour que le système soit automatisé ;-(

Hahaha magnifique !
Non j'ai pas touché aux crochets, ce qui bloquait à mon avis c'est comme je diasais plus haut, tu as une fonction qui s'exécute toutes les secondes à partir de l'ouverture de ta page et tu faisais une comparaison sur des millisecondes, si tu ouvres la page à disons 14min59s35ms la seconde d'après t'es à 15min00s35ms donc le reste de ta division par 15 n'est pas nul puisqu'il reste 35ms... Par contre si tu travailles que en secondes en faisant abstraction de ce qui est derrière, le programme voit 14min59 puis 15min00... et là bingo divisé par 15 le reste est nul donc il affiche le alert...
Ton code n'était pas faux en soi mais il fallait juste que tu ouvres ta page sur une seconde entière sans rien derrière, pas facile ^^

Oui effectivement le JS s'éxécute dans le navigateur du client donc il ne se passe rien quand aucune page n'est ouverte... suivant ce que tu veux faire il existe en effet des possibilités côté serveur de programmer des tâches récurrentes

ah bon?? c'est parfait si tu as des pistes des liens pour des tutos sje suis preneuses, je vais les regarder et apprendre

Je pense que tu peux regarder du côté des Cron Job mais là je t'avoue que je pourrais pas t'aider beaucoup, j'ai jamais utilisé, au hasard :
https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/cron-job/
https://www.hostinger.fr/tutoriels/cron-job

c'est déjà une piste tu n'imagine pas a quel point tu m'as sauvé je t'en 20, je regarde sa immédiatement

c'est cequ'il me faut , j'essai d'en savoir plus mais je crois que c'est exactement sa

Super ! content d'avoir pu t'aider ;)

tu m'as sauvé, je te reviendrai plus tard