IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Script selon la date du jour


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 45
    Points : 24
    Points
    24
    Par défaut Script selon la date du jour
    Bonjour à tous,

    ● Ce que j'ai déjà :

    Je tiens à jour un petit portail html sur IE pour la boîte dans laquelle je travaille.
    Sur ce portail on y place des news, avec un titre et une date.
    Je fais clignoter la date contenue dans le titre via un script que j'ai trouvé sur Internet et qui marche parfaitement.

    ● Ce que je voudrais :

    J'aimerais que cette date clignote seulement pendant deux jours. Il faudrait donc modifier le script afin qu'il fasse une comparaison entre la date du jour (donc date système) et la date de la news + 2 (qui serait donc indiquée dans le script via "date fin" par exemple), et ainsi qu'il empêche le clignotement si date du jour > date fin.

    ● Ce que j'ai tenté et qui ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    	<script language="javascript"> 
    	var dateauj= new Date();
    	var datefin= Date("Feb 28, 2013 00:00:00");
     
    if ( dateauj < datefin )
    {
    function blink_show()
    {
    blink_tags = document.all.tags('blink');
    blink_count = blink_tags.length;
    for ( i = 0; i < blink_count; i++ )
    {
    blink_tags[i].style.visibility = 'visible';
    }
     
    window.setTimeout( 'blink_hide()', 700 );
    }
     
    function blink_hide()
    {
    blink_tags = document.all.tags('blink');
    blink_count = blink_tags.length;
    for ( i = 0; i < blink_count; i++ )
    {
    blink_tags[i].style.visibility = 'hidden';
    }
     
    window.setTimeout( 'blink_show()', 250 );
    }
    while (dateauj < datefin){
    window.onload = blink_show;
    }
    } 
    --> on place ensuite dans <blink>le texte à faire clignoter</blink>
    </script>
    J'ai bidouillé comme j'ai pu mais sans connaissances ce n'est pas évident. En tous cas ça ne fonctionne pas...
    J'ai besoin de votre aide ! Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Merci, yes j'ai réussi !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var d1 = new Date();
    var d2 = d1.getDate();
    var d3 = new Date (2013,2,25)
    var d4 = d3.getDate();
     
    if ( d2-d4 <= 2 ) {

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    J'ai depuis amélioré quelque peu mon script et il fonctionnait très bien.
    Aujourd'hui je l'ai repris pour le mettre officiellement en ligne pour le portail de ma boîte et il ne fonctionne plus. Ca fait une heure que je chercher désespérement ce qui a pu se passer entre temps, je ne comprends pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <script language="javascript"> 
        var d1 = new Date();
        var d2 = new Date(2013,2,22); // (aaaa,m,j) janvier=0
     
    function diffdate(d1,d2){
    	var WNbJours = d2.getTime() - d1.getTime();
    	return Math.ceil(WNbJours/(1000*60*60*24));
    }
     
    if ( diffdate(d1,d2) <= 2 && diffdate(d1,d2) > 0 ) {	
     
    go_visibility = new Array;
     
    function goblink()
    	{
    	if(document.getElementById && document.all)
    		{
    		blink_tab = document.getElementsByTagName('blink');
    		for(a=0;a<blink_tab.length;a++)
    			{
    			if(go_visibility[a] != "visible")
    				go_visibility[a] = "visible";
    			else
    				go_visibility[a] = "hidden";
    			blink_tab[a].style.visibility=go_visibility[a];
    			}
    		}
    	setTimeout("goblink()", 500);
    	}
     
    window.onload = goblink;
    }
    //  on place ensuite dans <blink>le texte à faire clignoter</blink>
    </script>
    J'ai testé sans mon If diffdate et là ça clignote bien.
    Donc l'erreur provient soit du If, mais je n'en vois pas, soit de la fonction diffdate mais c'est celle de FAQ et je n'y ai pas touché, soit des variables. Or j'ai testé un alert(diffdate(d1,d2)) et il m'affiche bien "1" comme réponse, 1 étant le nombre de jours entre aujourd'hui et le 22 mars 2013 ( var d2 = new Date(2013,2,22); ).

    Une idée svp ?

    Merci !

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Ton if...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( diffdate(d1,d2) <= 2 && diffdate(d1,d2) > 0 )
    Essaie ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( (diffdate(d1,d2) <= 2) && (diffdate(d1,d2) > 0) )

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Merci pour ta réponse mais ça ne fonctionne toujours pas
    Et pourtant il y a de cela 3 semaines il fonctionnait très bien ! Je ne comprends pas

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Pourtant ça vient du IF puisque tu as testé sans et que ça marche, donc je vois pas là

    EDIT :

    Le mieux c'est que tu fasses ce code dans une page js de test :
    Le if tel qu'il est écrit là fonctionne très bien mais pas la formule !

    (surtout que depuis le temps, la date est dépassée)

    Et puis tu ne te servais pas de la valeur de retour de ta fonction diffdate()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function test()
    {
      var d1 = new Date();
      var d2 = new Date(2013,3,22);
     
      var WNbJours = d2.getTime() - d1.getTime();
      diff=Math.ceil(WNbJours/(1000*60*60*24));
     
       alert("diff = "+diff);
     
      if ( (diff <= 2) && (diff > 0) )
      {
      // Affiche ce "Ok" dés que tu auras réglé le truc de la date.
       // alert("ok");
      }
    }
    Et dans un body :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    !DOCTYPE html>
    <html>
    <head>
    <title>Accueil</title>
    <script language="javascript" src="index.js"> </script>
    </head>
     
    <body onload="test()">
     
    </body>
    </html>
    Voilà tu testes ça et tu verras ce qui cloche

    Fais gaffe aux parenthèses du if.

    Tu lances ensuite la page HTML, et tu ouvre directement la console "Développeur web / Console d'erreurs" du menu Outil de firefox, tu clique sur le bouton effacer, tu relance la page et tu regarde ce que dit la console d'erreurs, et à chaque modif/bidouille que tu fais tu efface le contenu de la console et tu relance ta page (actualisation).
    Tu vas comme ça te débrouiller tout seul

    Donc normalement alert("ok") devrait fonctionner si (d2-d1) est entre 0 et 2

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Salut,

    Alors concernant la date, elle n'était pas dépassée car j'ai pu remarquer que Janvier prend la valeur 0, donc du coup Mars vaut 2.

    J'ai testé tout ce que tu m'as dit, on est sous IE au boulot mais il y a aussi une console de débogage (que je ne connaissais pas, merci !). Avec les alert() ça fonctionne parfaitement, mais avec le code blink il ne se passe rien.

    Je ne comprends vraiment pas, d'autant plus qu'il y a 3 semaines tout fonctionnait à merveille. Je me dis que j'ai pu supprimer quelque chose du code sans faire exprès comme j'ai beaucoup travaillé sur cette page récemment, mais je ne vois pas, tout me semble intact. Je suis totalement débutant en JS alors ça n'arrange rien

    Il y a quelque chose qui nous échappe, mais quoi ? J'ai testé plein de choses

    Merci en tous cas pour ton aide

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    La balise blink permet de faire clignoter du texte. Cette balise fonctionne sur tous les navigateurs, sauf IE

    Au fait tu as vu ma signature ?

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    En tous cas la fonction goblink (que j'avais trouvé sur Internet) fonctionne très bien sans mon if, ça clignote sans problèmes

    Edit : oui j'ai vu perso chez moi je suis sous FF pour le PC et Safari pour le Mac, mais là au boulot on n'a pas le choix ^^

  11. #11
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Enlève ces deux choses de ton block de IF :

    - Le go_visibility = new Array;
    - Ta fonction goblink()

    Mets-les au-dessus du IF(), en-dehors quoi.
    Et dans ton Bloc du IF tu appelle la fonction goblink().

    Teste-le comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <script language="javascript"> 
    var d1 = new Date();
    var d2 = new Date(2013,2,22); // (aaaa,m,j) janvier=0
    go_visibility = new Array;
     
    function diffdate(d1,d2)
    {
    var WNbJours = d2.getTime() - d1.getTime();
    return Math.ceil(WNbJours/(1000*60*60*24));
    }
     
    function goblink()
    	{
    	if(document.getElementById && document.all)
    		{
    		blink_tab = document.getElementsByTagName('blink');
    		for(a=0;a<blink_tab.length;a++)
    			{
    			if(go_visibility[a] != "visible")
    				go_visibility[a] = "visible";
    			else
    				go_visibility[a] = "hidden";
    			blink_tab[a].style.visibility=go_visibility[a];
    			}
    		}
    	setTimeout("goblink()", 500);
    	}
    window.onload = goblink;
    }
     
    if ( (diffdate(d1,d2) <= 2) && (diffdate(d1,d2) > 0 ) )
    { 
    goblink();
    }
    //  on place ensuite dans <blink>le texte à faire clignoter</blink>
    </script>

    EDIT :
    J'avais fait un bête copier/collé de ton code et j'ai oublié que je t'avais dit de mettre des parentheses dans les conditions du if, bon c'est bon j'ai corrigé mon copié/collé.

  12. #12
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Fait gaffe aux accolades qu'elles soient complètes surtout^^

  13. #13
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Ca y est ça marche !!

    La console de débogage m'a indiqué une erreur sur la ligne en dessous de window.onload, il y a avait une accolade en trop. Du coup là ton code corrigé marche nickel ! J'ai testé différentes dates, pas de problèmes !

    Ouf ! Merci beaucoup pour ton aide


    Edit : d'ailleurs pourquoi on ne met pas de parenthèses au goblink de window.onload ?

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    car window.onlaod attend une fonction, pas un retour (resultat) de fonction ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    window.onload=goblink;
    //ou
    window.onload=function(){goblink()};

  15. #15
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Ah ça fait plaisir de t'avoir rendu service

    quand à ta question c'est parce que c'est une affection,

    On met les parentheses quand on appelle une fonction.

    Comme alert() par exemple.

    Bonne chance^^

    EDIT :
    Ah bein on s'est croisé

    window.onlaod
    Faute de frappe

  16. #16
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    D'accord, merci à tous les deux pour la réponse à ma question et encore un merci à toi dragonno !

    Bonne continuation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 04/11/2010, 13h28
  2. Réponses: 10
    Dernier message: 21/07/2010, 16h08
  3. [XL-2007] Changer de référence de feuille selon date du jour
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 04/01/2010, 15h47
  4. Script retournant la liste des fichiers d'un répertoire selon la date et la taille
    Par desolation1985 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 11/06/2009, 18h29
  5. VBA regroupement date selon choix option (par jour, par mois)
    Par IndyJones dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/12/2006, 20h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo