5568 sujets

Sémantique web et HTML

Bonjour bonjour,
Le validateur hurle à la mort à cause d'une itération Smiley decu

J'ai un truc du genre :

<script type="text/javascript">
//<!--
var i=100;
	function modifier() { 
		document.getElementById('madiv').innerHTML = 'Il vous reste : '+i;
		i--;
	};
	setInterval('modifier()',1500);
//-->
</script>

J'ai bien les commentaires et tout ça, pourtant il me dit (le pasbeau) :

"w3c" a écrit :
Error Line 15 column 5: invalid comment declaration: found character ";" outside comment but inside comment declaration.

i--;

Check that you are using a proper syntax for your comments, e.g: <!-- comment here -->. This error may appear if you forget the last "--" to close one comment, and later open another.


J'y connais rien en Javascript hein Smiley biggol j'avoue sans pb Smiley murf

Merci de votre aide.
Administrateur
Je pense que l'erreur vient du fait que le point-virgule signifie en HTML qu'il s'agit d'une "entité HTML" (comme &nbsp ; ), or là il ne la reconnait pas.

Tu devrais simplement externaliser ton script dans un fichier .js séparé du code html.
Modifié par Raphael (16 May 2006 - 17:16)
Non, l'erreur vient du "--". Cette chaîne de caractères est interdite dans un commentaire HTML (un souvenir de SGML...)

D'ailleurs, le validateur met sur la piste:
a écrit :

This error may appear if you forget the last "--" to close one comment, and later open another.

Modifié par Gilles (16 May 2006 - 17:35)
C'est la faute aux développeurs de HTML des années 90 (qui ont sûrement fumé un peu avant de pondre la spec)...
Je sais plus où c'est dans les spec, mais il est dit quelque part, c'est sûr, que la chaîne -- (double tiret et opérateur de décrémentation js par la même occasion) ne peut pas se trouver entre commentaires <!-- ... -->

Je n'ai jamais compris pourquoi cette débilité mais enfin bref, bienvenu du côté obscure de la spec.

Deux alternatives :
1. Pour faire simple, remplace i--; par i -= 1; comme ça c'est réglé et le script js n'y verra que du feu.

2. Ou alors utilise du CDATA.
Perso, je déconseille parce qu'il faut mettre une ligne du style de celle-ci au début et à la fin du script. Je trouve que c'est dégeulasse comme code :
<!--/*--<!--***//*<!CDATA/#/*--
cf openweb pour le code exact, là ce n'est qu'une invention.

Je te conseille donc la première solution.

Si quelqu'un arrive à m'expliquer pourquoi -- est interdit dans les commentaires HTML, il est le bienvenu.
Hum...
Débat très intéressant, je pensais poser une question de grosse quiche Smiley lol
Ta solution quentin est très chouette, je regrette de ne pas y avoir pensé plus tôt.
Merci à tous.
Pour moi, c'est ceci qui est le meilleur:
a écrit :
Tu devrais simplement externaliser ton script dans un fichier .js séparé du code html.


Comme pour la présentation, on sépare ainsi le comportement du contenu et de la structure.
Modifié par Smiley neko (17 May 2006 - 00:19)
neko a écrit :
Pour moi, c'est ceci qui est le meilleur:Tu devrais simplement externaliser ton script dans un fichier .js séparé du code html.


Comme pour la présentation, on sépare ainsi le comportement du contenu et de la structure.

Effectivement. Je n'y ai même pas pensé, mais ... +1.