11491 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai suivi un tuto pour faire un menu animé en JQuery, car j'ai un devoir à faire (je débute en developpement, je suis en formation), et j'arrive bien à avoir un sous menu qui descend, trop bien même car tout mes sous menus se déroulent au moment ou je clique sur le premier Smiley smile

Je suppose que c'est une erreur de débutant, mais j'avoue n'avoir pas de cours sur les javascripts (la méthode de mon prof c'est demerde toi on voit après..) et être bloqué depuis deux jours alors que tout le reste est assez aisée.

Je sais que ce n'est pas très précis, mais si vous avez des questions pour que je clarifie tout ça, je ferais en sorte de vous répondre au mieux.


je vous laisse ma page html et mon code CSS, :



<!DOCTYPE HTML PUBLIC "-//W3C/DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

	<head>
			<link rel="stylesheet" media="screen" type="text/css" href="style.css" />
				<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
			
				<script type="text/javascript">
					$(document).ready(function () 
						{
					    $("#body > li").addClass("alt");
					    $('img.menu_head').click(function () 
					    	{
					        $('ul.menu_body').slideToggle('medium');
					 		   });
					    		$('ul.menu_body li a').mouseover(function () 
					    			{
					        		$(this).animate({ fontSize: "14px", paddingLeft: "20px"}, 50 );
					  				  });
					   					 $('ul.menu_body li a').mouseout.(function () {
					       				 $(this).animate({ fontSize: "12px", paddingLeft: "10px" }, 50 );
					    				});
						}
						);											
				</script>

	</head>

<Title>Accueil</title>
	
	<body  background="img/background.jpg">
	
	<center>	
		
			<big><font color=white><b>CHAPITRE 1</b></font><br></Center>
		
	</center>
		
	<center>
	
		
<table>
	<td>
		
	<center><br><br><p><font color=white>Algorithme</center>
			<ul id="#menu">
			<div id=alt>
						<img src="Telecharger.png" class="menu_head" />
						<a href="Algo.pdf"><img src="visualiser.png" target="Accueil" class="menu1_head" /></a>						
							<ul width="100" height="15" class="menu_body">
	    
							    <li><a href="Algo.pdf">en PDF</a></li>
							    <li><a href="Algo.txt">en TXT</a></li>
							    
							</ul></font>

					</div>
			</ul>
			<br><br><br><br>
			<p>	<font color=white>Exercice en C&nbsp;&nbsp;&nbsp;&nbsp;
			<input type=submit value=Visualiser name=visualC> / 
			<input type=submit value=Telecharger name=DwnlC>
			
			<br><br><br><br>
			<p><font color=white>PHP&nbsp;&nbsp;&nbsp;&nbsp;
			<input type=submit value=Visualiser name=visualPHP> / 
			<input type=submit value=Telecharger name=DwnlPHP>


		 
	</td>

	<td>
			<br><br><p><font color=white>Algorithme
			<ul id="#menu2">
			<div id=alt2>
						<img src="Telecharger.png" class="menu_head" />
						<a href="Algo.pdf"><img src="visualiser.png" target="Accueil" class="menu_head" /></a>

						
							<ul width="50" height="15" class="menu_body">
	    
							    <li><a href="Algo.pdf">en PDF</a></li>
							    <li><a href="Algo.txt">en TXT</a></li>
							    
							</ul></font>

					</div>
			</ul>
			<br><br><br><br>
			<p><font color=white>Exercice en C&nbsp;&nbsp;&nbsp;&nbsp;
			<input type=submit value=Visualiser name=visualC> / 
			<input type=submit value=Telecharger name=DwnlC>
			
			<br><br><br><br>
			<p><font color=white>PHP&nbsp;&nbsp;&nbsp;&nbsp;
			<input type=submit value=Visualiser name=visualPHP> / 
			<input type=submit value=Telecharger name=DwnlPHP>
			
	</td>
	
</center>
	
</body>

</style>
</html>





Et le CSS:




a:link 
{text-decoration:none;
color:#288CFE;}

a:hover
{color:#0DBEFE;
text-decoration:none;}

#body
{
position:absolute;
margin-top:-2px;
background:#9bb7dc;
font-family:myriad-pro;
font-size:12px;
}

ul, li
{
margin:0;
padding:0;
list-style:none;
}

.menu_head
{
border:1px solid;
}

.menu_body li
{
background:;
}

.menu_body li a
{
color:#FFFFFF;
text-decoration:none;
padding:10px;
display:block;
}

.menu_body li.#alt
{
background:#;
}

.menu_body li.#alt2
{
background:#;
}

.menu_body
{
display:none;
width:92px;
border-right:;
border-bottom:;
border-left:;
}

#menu
{
display:none;
position:absolute;
width:92px;
border-right:;
border-bottom:;
border-left:;
}


#menu2
{
display:none;
position:absolute;
width:92px;
border-right:;
border-bottom:;
border-left:;
}

.menu_body li a:hover
{
padding:15px 10px;
font-weight:bold;
}



Merci d'avance, et bonne journée
Modérateur
Salut haplo, bienvenue sur Alsacréations Smiley smile

La première chose à faire est de rendre ton code HTML valide car si tu laisses tes erreurs actuelles, tout code CSS ou JS que tu vas sortir s'appuira sur une base bancale, ce qui peut amener une multitude de comportements indésirables.

Je t'invite donc à passer ton code dans le validateur W3C puis à corriger tes erreurs en t'aidant des recommandations indiquées par ce dernier.

De là, on passera à la suite.
Modifié par koala64 (16 Sep 2010 - 15:29)
Wow impressionant la rapidité de la réponse !! Merci beaucoup, je fais ça et je vous reviens!
Rebonjour,

Je viens de passer ça au correcteur, il y a encore des erreurs mais si je les corrige comme il me le dit, mes éléments touchés par le CSS et le javascript ne passe plus.
Les erreurs à corriger sont : les # avant dans div id=, le type pour l'image (quoi que je fasse il me met une erreur que je ne commprend pas..)
et le </html> (d'après lui je le ferme alors qu'il n'est pas fini oO)
Je ne vois pas comment fair epour eviter ces erreurs : si j'efface mes # : plus de boutons pour mes menus, pour les type il me dit de mettre text/css ou javascript pour un script, or il s'agit uniquement d'une image.
Je suis desolé, mais j'ai un temps limité et ça m'a l'air plus propre.
Aussi le format qu'il a maintenant vous convient-elle mieux:



<html>


	<head>
			<link rel="stylesheet" media="screen" type="text/css" href="style.css">
				<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
				<script src='menu.js' type='text/javascript'></script>


			<Title>Accueil</title>
	
	</head>

	<body  background="img/background.jpg">
	
	<center>	
		
			<big><font color=white><b>CHAPITRE 1</b><br></font></big></Center>
		

		
	<center>
	
		
<table>
<tr>
	<td>
		
	<center><br><br><p><font color=white>Algorithme</font></p></center> 
			<div id=#menu>
						<font color=white>
						<img src="Telecharger.png" class="menu_head">
						<a href="Algo.pdf"><img src="visualiser.png" class="menu_head"></a>
						</font> 
						
							<ul class="menu_body">
							
							    <li><font color=white><a href="Algo.pdf">en PDF</a></font> </li>
							    <li><font color=white><a href="Algo.txt">en TXT</a></font> </li>
							   
							</ul>

					</div>

			
		<br><br><br><br>
		<p><font color=white>Exercice en C&nbsp;&nbsp;&nbsp;&nbsp;
			<input type=submit value=Visualiser name=visualC> / 
			<input type=submit value=Telecharger name=DwnlC>
		</font></p>
		<br><br><br><br>
		<p><font color=white>PHP&nbsp;&nbsp;&nbsp;&nbsp;
			<input type=submit value=Visualiser name=visualPHP> / 
			<input type=submit value=Telecharger name=DwnlPHP>
		</font></p>

		 
	</td>

	<td>
		
	<br><br><p><font color=white>Algorithme</font>
			<div id=#menu2>
						<font color=white>
						<img src="Telecharger.png" class="menu_head">
						<a href="Algo.pdf"><img src="visualiser.png"  class="menu2_head"></a>
						</font> 
						
							<ul class="menu_body">
							
							    <li><font color=white><a href="Algo.pdf">en PDF</a></font> </li>
							    <li><font color=white><a href="Algo.txt">en TXT</a></font> </li>
							   
							</ul>
			</div>

			
		<br><br><br><br>
		<p><font color=white>Exercice en C&nbsp;&nbsp;&nbsp;&nbsp;
			<input type=submit value=Visualiser name=visualC> / 
			<input type=submit value=Telecharger name=DwnlC>
		</font></p>	
		<br><br><br><br>
		<p><font color=white>PHP&nbsp;&nbsp;&nbsp;&nbsp;
			<input type=submit value=Visualiser name=visualPHP> / 
			<input type=submit value=Telecharger name=DwnlPHP>
		</font></p>
	</td>
</tr>	
</table>
</center>
	
</body>
</html>






Et y a t-il un moyen d'envoyer des pieces jointes? je pense que le probleme serait criant si vous voiyez ce qu'il en est!
Modérateur
hum... bon déjà, tu peux virer toutes tes balises "center", "font", "big" et "br" (ainsi que les espaces insécables &nbsp;) car là, tu cherches à faire de la mise en forme via le HTML alors que le même résultat peut être obtenu via CSS... et c'est bien le rôle de ce dernier. (sans compter que les 3 premières sont obsolètes depuis belle lurette)

Par ailleurs,

- tous les attributs de balise doivent être mis entre guillemets,
- toutes les balises doivent être écrites en minuscules,
- toutes les balises doivent être correctement ouvertes et fermées (<div></div> pour les balises normales et <input type="text" />, par exemple, pour les balises auto-fermantes),
- et tu peux virer le # devant chaque id au sein de ton HTML car c'est invalide

(En fait, si tu mets <div id="menu"></div> dans ton HTML, tu y accèdes dans ton CSS par le sélecteur #menu et pas sous la forme div.#menu comme dans tes styles actuels)

Si tu n'as pas tout à fait le rendu escompté pour l'instant, c'est normal car, pour le moment, tu ne fais que corriger ta structure.

Une fois cette dernière correcte, c'est là qu'il faut agir sur les styles CSS pour retrouver ta mise en forme... et seulement après, on en vient au JS.
Modifié par koala64 (16 Sep 2010 - 17:39)
Re - ,

Merci de votre réponse.

Cela va vous sembler idiot mais mon problème n'est pas tellement la mise en forme de l'image. Je m'explique avec deux images, celle avant de cliquer sur le bouton telecharger qui doit m'ouvrir un menu, mais qui en fait m'ouvre aussi celui de l'exercice 2 (image 2), c'est là que ça casse pour moi.
upload/32641-m3.PNG upload/32641-m3.PNG
Modérateur
Oué mais bon... Là, tu cherches à brûler les étapes, dans la panique... Il aurait mieux valu t'inquiéter avant pour bien faire... Smiley rolleyes

Bref, ce qu'il y a, déjà dans ton JS qui ne va pas, c'est le point juste après le mouseout (à virer)
Modérateur
Sur cette ligne :
$('ul.menu_body').slideToggle('medium'); 
tu dis d'ouvrir tous les menus ul de classe menu_body alors qu'il faut que tu dises de n'ouvrir que le menu ul de classe menu_body étant dans le même parent que le bouton que tu cliques.

Il faut donc, à partir du $(this) te servir de la méthode getParent pour remonter au parent puis il faut cibler ton ul avec la méthode find.

... et là-dessus, je me sauve, ayant rendez-vous. Smiley langue

... donc si problème il y a, ce sera soit demain soit, si tu as de la chance, quelqu'un d'autre qui prendra le relais.

Bon courage... Tu devrais y arriver avec ce que je viens de t'indiquer. Smiley cligne
Modifié par koala64 (16 Sep 2010 - 17:59)
Vous avez raison, je m'en rends bien compte sur le coup, que j'ai grillé quelques étapes. Je compte bien rattraper le coup, mais c'est le js le principal probleme, et le moins évident. Même si je ne suis pas calé sur le reste, j'en suis bien conscient.
J'ai viré le point, mais ça ne change rien.
N'y a t il aucune chance que je m'embrouille dans les classes et les id? Dois-je considerer mes menus comme des sous-menus?
Merci beaucoup pour la réponse, bonne soirée donc, j'up si ça marche ou si je trouve!!

Merci encore Smiley smile