Javascript :

Fermé
crazy - 21 janv. 2009 à 21:45
 crazy - 21 janv. 2009 à 22:25
Bonsoir,

J'ai besoin d'aide pour l'écriture d'un code Javascript et j'espère que vous aurez la gentillesse de m'aider.

Le but du script est de gérer l'apparition d'images différentes en fonction de la date du jour à savoir (par exemple) :
- "image1" doit apparaître du 15 au 25 janvier
- "image2" doit apparaître du 27 février au 10 mars
- etc.
- lorsqu'il n'y a aucune date spécifiée, c'est "image00" qui apparaît par défaut.

J'ai trouvé sur Internet un script approchant un peu de ce que je veux faire. J'ai donc essayé de le décrypter (je ne suis pas du tout programmeur, il a donc fallu que j'essaie d'abord de deviner à quoi servait chaque ligne ou chaîne de caractères totalement nébuleuses pour moi), puis de l'adapter.

Sans réelle surprise, une fois copié sur la page du site, mon script ne marche pas. Voici le code, pourriez-vous m'aider à le corriger ? Merci d'avance.


<SCRIPT LANGUAGE="JavaScript">

function TodayDate() {
var m = new Array( "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre");
var y = new Array( "2009", "2010");
var today = new Date();
var day = today.getDate();
return (day + " " + m[today.getMonth()] + " " + y[today.getYear()]);
}
var date = TodayDate();

if (date >= "15 janvier 2009" && date <= "25 janvier 2009") { document.write("<img src="images/image1.gif" border=0>"); }
if (date >= "27 février 2009" && date <= "10 mars 2009") { document.write("<img src="images/image2.gif" border=0>"); }
else { document.write("<img src="images/image00.gif" border=0>"); }

</SCRIPT>


Par ailleurs, je préférerais placer ce code dans un "fichier.js" et placer un appel à ce fichier au bon endroit dans ma page html. Quel code dois-je alors mettre dans mon html ? Et dois-je écrire quelque chose dans le "head" de ma page ?

Voilà. N'étant pas une habituée du jargon, j'espère avoir exprimé ma demande clairement.
Merci beaucoup pour votre aide.

1 réponse

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 326
21 janv. 2009 à 22:08
Bonsoir Crazy,
Tu n'est pas très loin, tu n'as fait qu'une seule erreur en fait.
En javascript, tu peux utiliser les opérateurs de comparaison (>, <, = ...) sur les chaînes. Ca va comparer les valeurs des codes ascii des caractères de ces chaînes.

Exemple :
"a" < "b"
"b" < "g"
"ab" < "ac"

Ton script ne fonctionne pas car tu fais :
if (date >= "15 janvier 2009" && date <= "25 janvier 2009") par exemple.
Ca ne va pas comparer la valeur des dates, mais les chaînes que tu affiches. Par exemple "16 décembre 2008" >= "15 janvier 2009" retourne vrai.

La solution, c'est d'utiliser l'objet Date de javascript, et de comparer les millisecondes représentant cet objet (via la méthode getTime()).

Pour plus d'informations, je te conseille de lire ceci : http://www.commentcamarche.net/contents/javascript/jsdate.php3.
Ca t'explique notamment comment créer un objet date pour une date données (le 15 janvier 2009 par exemple).

Pour l'insertion d'un script dans ta page html, il faut faire <script language="javascript" src="toto.js"></script> si ton fichier toto.js est à la racine.

Cordialement,
0
Bonjour Marco et merci beaucoup pour ta réponse.

Je m'accroche pour essayer de bien la comprendre (c'est la première fois de ma vie que j'utilise du Javascript alors c'est un peu un jeu de "devinette" pour moi) et je vais aller lire le lien que tu me donnes. Puis essayer de trouver comment on manipule "getTime" et à quel endroit. A dans... une semaine (me faudra bien ça :-) ).

Merci encore.
0