11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour.

Surement une question toute simple, mais j'ai pas réussi à trouver la solution adéquate.

J'ai deux scripts externes (un pour un menu horizontal et un pour une galerie)

mais si je met comme ça :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>MétéOBell - Arc en Ciel</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	    <link rel="stylesheet" media="screen" type="text/css" title="Design Sous-Dossiers" href="Styles/CSS_menu_01.css" /> <!--Lien fichiercss-->
 

<script type="text/javascript" src="dynmenu.js" ></script>

<script type="text/javascript"src="galerie.js"</script>
</head>  


galerie.js marche mais pas dynmenu.js

Si je met comme ça :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>MétéOBell - Arc en Ciel</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	    <link rel="stylesheet" media="screen" type="text/css" title="Design Sous-Dossiers" href="Styles/CSS_menu_01.css" /> <!--Lien fichiercss-->
 

<script type="text/javascript" src="dynmenu.js" src="galerie.js"></script>
</head> 


C'est le contraire, dynmenu.js marche, mais pas galerie.js

Comment faire ?

Merci bien.
Modifié par Damonya (15 Oct 2005 - 18:49)
<script type="text/javascript" src="dynmenu.js" ></script>

<script type="text/javascript"src="galerie.js"</script>


1er ex: La deuxième ligne n'est pas fermée !! (galerie.js">)
2eme ex: tu oublies, la syntaxe de mettre 2x src="... est fausse

Modifié par brunob (15 Oct 2005 - 16:49)
Pardonnez-moi, pour le 1er exemple, une petite erreur de frappe en écrivant dans le forum. Donc ça change rien, ca marche toujours pas.

Pour le second exemple, selon toi, c'est apparemment faux. Bien c toujours bon à savoir.

Que faut il donc ecrire pour que mes deux scripts marchent.

Les combiner tous les deux dans un même script ?
yO,

ça ne marche pas car tes deux scripts définissent ce qu'il doit se passer au chargement de la page. Donc le second remplace le premier.

cherches cette syntaxe dans les fichiers


window.onload = function() {
........
}


Et essayes de mettre le contenu dans un seul et même appel.
Yep en effet, tu as raison, car même en mettant mes deux javascripts dans un même et seul fichier j'en ai qu'un des deux qui se met en marche.

je connais un peu le C++, mais pour le javascript je suis pas calé du tout. c donc le même principe apparemment. Mais j'arrive pas à transformer ce que je sais avec le C++, avec mon javascript. Je connais pas la fonction qui fait "ET" en javascript (je crois que ça doit être un tru c comme ça, enfin j'imagine).

Voici les deux codes inclus dans le même fichier. Si vous me montrez une fois, après je pourrais me débrouiller je pense.


//Javascript Menu Horizontal
window.onload=function(){dynMenu("menu_horizontal",1000)} // temporisé 1 seconde

dynMenu = function(idMenu,delai) {planq=0;
Menu=document.getElementById(idMenu);
dls = Menu.getElementsByTagName("dl");
dds = Menu.getElementsByTagName("dd");

if(dds){
  for(var i=0;i<dls.length;i++) {
    dls[i].onmouseover=function(){
			clearTimeout(planq);
      smenu=this.getElementsByTagName("dd")[0]
      if(smenu){cachetout();smenu.style.display="block"}
    	}
   dls[i].onmouseout=function(){
    if(delai)planq=setTimeout('cachetout()',delai);
  	}
   }
cachetout()
  }
document.onclick=cachetout;
}
function cachetout(){for(var j=0;j<dds.length;j++)dds[j].style.display="none";}


//Javascript Galerie
function displayPics()
{
	var photos = document.getElementById('galerie_mini') ;
	// On récupère l'élément ayant pour id galerie_mini
	var liens = photos.getElementsByTagName('a') ;
	// On récupère dans une variable tous les liens contenu dans galerie_mini
	var big_photo = document.getElementById('big_pict') ;
	// Ici c'est l'élément ayant pour id big_pict qui est récupéré, c'est notre photo en taille normale

	var titre_photo = document.getElementById('photo').getElementsByTagName('dt')[0] ;
	// Et enfin le titre de la photo de taille normale

	// Une boucle parcourant l'ensemble des liens contenu dans galerie_mini
	for (var i = 0 ; i < liens.length ; ++i) {
		// Au clique sur ces liens 
		liens[i].onclick = function() {
			big_photo.src = this.href; // On change l'attribut src de l'image en le remplaçant par la valeur du lien
			big_photo.alt = this.title; // On change son titre
			titre_photo.firstChild.nodeValue = this.title; // On change le texte de titre de la photo
			return false; // Et pour finir on inhibe l'action réelle du lien
		};
	}
}
window.onload = displayPics;
// Il ne reste plus qu'à appeler notre fonction au chargement de la page
[/i][/i][/i]


Mirci Smiley smile
Modifié par Damonya (15 Oct 2005 - 18:23)
C bon j'ai trouvé. Tu m'as mis sur la voix Thanh, je t'en remercie.

Il n'y a en fait pas de fonction ET en javascript. Suffit de les mettre à suivre, je me suis rendu compte (comme en C++ en fait lol)

J'ai supprimé la première ligne du code.

Et à la fin j'ai mis ça :

// Il ne reste plus qu'à appeler notre fonction au chargement de la page
window.onload=function()
{
 //Javascript Menu Horizontal
dynMenu("menu_horizontal",1000);// temporisé 1 seconde
//Javascript Galerie
displayPics(); 
} 


Les deux scripts marchent maintenant.

PS : fallait aussi rajouter les () après displayPics pour que ça marche et des ; après chaque fonction.

Ouf, je suis content Smiley biggrin
Modifié par Damonya (15 Oct 2005 - 18:45)
Si tu tiens à garder tes deux scripts indépendants, il y a également moyen d'ajouter plusieurs gestionnaires d'évènements à un évenement unique :

window.addEventListener( "load", ma_fonction, false );

pour les navigateurs normaux et
window.attachEvent( "onload", ma_fonction );

pour Internet Explorer.