5568 sujets

Sémantique web et HTML

Bonjour,
Je réactualise mon vieux site avec les normes actuelles et j'ai un problème avec Javascript.
Le script que j'avais écrit à l'époque (2003) s'exécute parfaitement tant que je ne déclare pas <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> dans ma page.
Il s'agit d'un diaporama et si je mets cette déclaration ( même seulement <!DOCTYPE html>), une partie seulement des fonctions du diaporama fonctionnent !!
Est-ce que quelqu'un saurait me dire pourquoi ?
La page concernée est : http://www.abientotsurleweb.com/coreedusud/photoseoul.php

Merci d'avance
Ouh la la !!!
C'est du charibia pour moi Smiley decu
C'est quoi la console d'erreurs de Javascript ?
et ça veut dire quoi ....FonctionPhotoCarte.js:17 que j'ai une erreur à la ligne 17 ?

Merci d'avance Smiley smile
SophieT a écrit :
C'est quoi la console d'erreurs de Javascript ?

Tu écris (ou as écrit) des scripts JS sans jamais utiliser la console d'erreurs JavaScript?
Dans Firefox: Tools > Web Developer > Error Console.
Avec Firebug tu retrouves aussi les erreurs JS dans l'onglet Console.
Dans Web Inspector (outils pour développeur par défaut dans Chrome) tu as aussi une console d'erreurs.
Dans les Developer Tools d'IE 8-9 tu as aussi un onglet console.
Etc.

SophieT a écrit :
et ça veut dire quoi ....FonctionPhotoCarte.js:17 que j'ai une erreur à la ligne 17 ?

Oui, ça te dit que l'erreur mentionnée juste avant a été repérée à la ligne 17 dans ton fichier FonctionPhotoCarte.js Smiley smile

Apparemment tu fais appel directement à un élément du DOM (un élément HTML de ta page, si tu préfères):
DiaLieuDate.innerHTML='<h4>' + MaDate[a] + '</h4>';

Quand le navigateur voit DiaLieuDate, il regarde:
1. si c'est une variable connue (ce n'est pas le cas);
2. à défaut, s'il existe un objet ou une propriété window.DiaLieuDate.

Quand ta page est interprétée en mode Quirks, pour window.machin les navigateurs (ou au moins une partie des navigateurs, il me semble que Firefox ne l'a jamais fait...) vont chercher dans la page un élément qui aurait pour id ou name "machin". Quand la page est interprétée en mode Standard, ils vont respecter les standards JavaScript et DOM plus précisément, et ne feront donc pas cette recherche.

La solution c'est de toujours définir explicitement à quels éléments correspondent les noms que tu utilises, en définissant des variables:
var DiaLieuDate = document.getElementById('DiaLieuDate');
DiaLieuDate.innerHTML='<h4>' + MaDate[a] + '</h4>';

Tu peux rajouter cette définition de variable vers le début de ton script, vu que tu utilises DiaLieuDate à de nombreux endroits par la suite.
Ben oui, j'ai écrit du script javascript en adaptant quelque chose que j'avais trouvé à l'époque...Et à l'époque je ne sais pas si tous ces outils existaient mais maintenant je sais que Firebug qui est déjà génial est encore plus génial avec la console !!!
Trop cool, milles mercis, quelques petites modifs est mon script marche parfaitement Smiley smile