11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour.

J'ai récupérer sur votre site le script d'un menu déoulant vertical.
Il marchait bien jusqu'à ce que je mette sur ma page un code js pour avoir la date.
Explication :
J'ai créé une fichier DateJour.js dans lequel j'ai une fonction qui me permet d'afficher la date sur mes pages.
Ensuite sur mes pages j'ai le code suivant :
<script type="text/javascript">
<!--
window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
	for (var i = 1; i<=10; i++) {
		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
	}
if (d) {d.style.display='block';}
}
//-->
</script>
<script type='text/javascript' src="DateJour.js"></script> 
</head> 

<body onload ="document.getElementById('DJ').innerHTML=ladatedujour();"> 


ensuite j'ai le tableau suivant dans lequel j'appelle ma fonction pou rla date (ça ca marche!:
<div class="position" style="left: 1px; top: 95px">
<table border=1px  bgcolor=#A9BFCB align="center">
	<colgroup width="200">
	<colgroup width="190">
	<colgroup width="190">
	<colgroup width="190">
	<colgroup width="190">
	<tr>	
		<td id="DJ" class=td1 style="color:blue">
		</td>
		<td class=td1><a href="index.htm" class=lien>Accueil</a>
		</td>
		<td class=td1><a href="traitement.htm" class=lien>Qui sommes-nous ?</a>
		</td>
		<td class=td1><a href="traitement.htm" class=lien>Nous contacter</a>
		</td>
		<td class=td1><a href="traitement.htm" class=lien>Plan du site</a>
	</td>
</table>
</div>


après j'ai mon menu avec les sous menus :
<!-- Menu  -->
<dl id="menu" class="position" style="left: 1px; Top:121px">
	<dt onmouseover="javascript:montre();"><a href="Historique_Club.htm">Historique</a></dt>
		<dd>
		</dd>
	<dt onmouseover="javascript:montre();"><a href="organisation_france.htm">Organisation France</a></dt>
		<dd>
		</dd>
	<dt onmouseover="javascript:montre();"><a href="traitement.htm">Organisation Europe</a></dt>
		<dd>
		</dd>	
	<dt onmouseover="javascript:montre();"><a href="bulletin_adhesion.htm">Bulletin d'adh&eacute;sion</a></dt>
		<dd>
		</dd>			
	<dt onmouseover="javascript:montre('smenu2');">Prix Sant&eacute;</dt>
		<dd id="smenu2">
			<ul>
				<li><a href="Historique_PrixSanteEntreprise.htm">Historique</a></li>
				<li><a href="traitement.htm">Prix 2005</a></li>
				<li><a href="traitement.htm">Prix 2004</a></li>
				<li><a href="traitement.htm">Prix 2003</a></li>
				<li><a href="traitement.htm">Prix 2002</a></li>
			</ul>
		</dd>	
etc....


le fait d'avoir intégré la date fait que les osus menus sont affichés à l'ouverture de ma page et je sais pas comment me sortir de ce problème.

Donc merci d'avance si vous pouvez m'aider
Bonjour,

Ahem. On va encore me trouver dur, là.

Mais... pourquoi ne pas supprimer l'affichage de la date du jour, aussi dépourvue d'utilité que d'intérêt ? Smiley cligne

Plus sérieusement : elle prête à confusion avec une éventuelle date de mise à jour du document (beaucoup plus utile, elle).

(C'est amusant : on se penche en ce moment sur une bonne pratique Opquast à propos de la duplication inutile dans les pages Web des fonctionnalités natives des navigateurs - ajouter aux favoris, imprimer, etc - Faut-il envisager une bonne pratique sur le fait de ne pas dupliquer les fonctionnalités natives de la montre de l'utilisateur ?)
Bon j'accepte volontier la critique, mais y a t il une façon de résoudre ce problème ou bien est ce que je dois me contenter de cette réponse?

Merci

Pour info : personnellement je ne sais jamais quel jour de la semaine on est sauf le we Smiley cligne
Bonjour,

(Tout d'abord, je suis relativement d'accord avec Laurent sur l'inutilité de l'affichage de la date du jour, je l'ai d'ailleurs supprimée de mon propre site la semaine dernière... Mais il doit bien exister certains cas particuliers, où elle peut être utile !)

Passons à la résolution du problème :
Tu définis 2 fois un comportement différent pour l'évènement "onload", une fois dans le script du menu par
window.onload=montre;
et une fois dans le body par
<body onload ="document.getElementById('DJ').innerHTML=ladatedujour();">


Pour résoudre le pbm, il faut supprimer la ligne
window.onload=montre;
et transformer la déclaration du body par
<body onload="document.getElementById('DJ').innerHTML=ladatedujour();montre();">


(note: j'ai pas testé le résultat, mais je suis à peu près sûr que le problème vient de là...)
Je viens de voir seulement maintenant la réponse de Mpok.

J'ai fais le test et ça marche.
Pour l'affichage de la date je suis d'accord et je l'ai d'ailleurs moi aussi supprimée d'un site que je gère.

Mais bon, on fait pas toujours ce qu'on veut

Un grand merci