5568 sujets

Sémantique web et HTML

Bonjour
voilà, j'essaye de valider mon site, j'ai intégré un menu vertical avec une fonction "dropdown" et le validateur ne veut pas prendre en compte la syntaxe.

Après validation de mon message, tous les [ID] (en minuscules) sont remplacés par un smiley ! Comique ! Smiley lol Je les ai donc remplacés par ID en majuscules.

Voici le script du menu
<script type="text/javascript">  
stat=new Array(); 
function changeMain(id){
	objParent=document.getElementById(id); 
	objDaughter=document.getElementById('iDMain'+id); 
if (stat[ID]!=1) {
	stat[ID]=1; objDaughter.style.display='block';} 
else {
	if(stat[ID]==1){
		stat[ID]=0; objDaughter.style.display='none'; }
					}  
	} 
</script>


Voici un bout du menu :
  
<div class='cParentMain'><a href='#none' id='1'  onClick='changeMain(id)'  >Texte1</a></div>
<div id='iDMain1' class='cDaughterMain' style='display: none'>
<a href='blabla.php'>Lien1.1<br /></a>
<a href='blabla.php'>Lien1.2<br /></a>
<a href='blabla.php'>Lien1.3<br /></a>
<a href='blabla.php'>Lien1.4<br /></a>
</div>
<div class='cParentMain'><a href='#none' id='2'  onClick='changeMain(id)'  >Texte2</a></div>
<div id='iDMain2' class='cDaughterMain' style='display: none'>
etc....

apparement le validateur ne veut pas que je mette id='1' ou id='2', etc...
Voici le message :
Line 58 column 51: value of attribute "id" invalid: "1" cannot start a name.
<div class='cParentMain'><a href='#none' id='1' onClick='changeMain(id)' >

Quelle serait la solution ?
Merci de votre aide.
Modifié par coxine (04 Feb 2006 - 17:44)
ok ! c'est ce que j'avais cru comprendre....
Mais comment modifier mon code ?
<script type="text/javascript">  
stat=new Array(); 
function changeMain(id){
	objParent=document.getElementById(id); 
	objDaughter=document.getElementById('iDMain'+id); 
if (stat[ID]!=1) {
	stat[ID]=1; objDaughter.style.display='block';} 
else {
	if(stat[ID]==1){
		stat[ID]=0; objDaughter.style.display='none'; }
					}  
	} 
</script>


Je ne peux indiquer "menu1" à la place de 1, j'ai fait le test et bien évidemment plus rien ne fonctionne
Et comme je ne suis pas du tout experte en JS Smiley bawling
Smiley ohwell
Modifié par coxine (04 Feb 2006 - 14:59)
Administrateur
Bonjour,

dans
if (stat[ID][b]!=1[/b]) {
et
<div class='cParentMain'><a href='#none' [b]id='1'[/b]  onClick='changeMain(id)'  >Texte1</a></div>

le "id différent de 1" correspond (ou pas) au id que la balise div possède.

L'important est que les 2 noms soient les mêmes (en plus d'être autorisés ce qui n'est pas le cas de '1'). Donc si tu remplaces 1 par menu1 dans le code JS, il faut aussi modifier dans le code HTML tous les id='1' par id='menu1' pour que l'un fasse référence à l'autre.

En passant, si 1 n'est pas autorisé comme nommage, c'est aussi une très mauvaise manière: comment savoir si 1 fait référence à un menu ou une image ou la 3ème colonne ou un lien? C'est pas très parlant, dans 3 mois quand on rouvre le code et qu'on a fait plein de choses entre temps, on se rappelle rarement à quoi cela correspondait Smiley lol

Felipe
merci pour vos réponses !
J'ai solutionné le pb :
En changeant finalement le Javascript
<script language="JavaScript" type="text/javascript">  
stat=new Array(); 
function changeMain(name){
	objParent=document.getElementById(name); 
	objDaughter=document.getElementById('iDMain'+name); 
if (stat[name]!=1) {
	stat[name]=1; objDaughter.style.display='block';} 
else {
	if(stat[name]==1){
		stat[name]=0; objDaughter.style.display='none'; }
					}  
	} 
</script>


Et donc en supprimant l'attribut id='1', par name="1"

Smiley biggrin Ma page est validée !
Et le menu fonctionne correctement.