rehtakulveets
Messages postés15Date d'inscriptionmardi 14 novembre 2006StatutMembreDernière intervention20 mars 2009
-
3 mars 2009 à 10:47
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 2011
-
20 mars 2009 à 17:14
Bonjour à tous.
Je sais que le sujet a déjà été traité mais mon problème est un peu différent et je n'arrive pas à m'en sortir.
J'ai récupéré un code ici et me le suis adapté mais pourtant un problème subsiste et mes compétences en javascript sont dépassées à ce stade!
Mon problème : j'ai un menu avec 7 rubriques (7 images) avec un onmouseover, un onmouseout et un onClick sur chq image avec un changement d'image classique sur les onmouseover/out et l'ouverture de sous-rubriques avec le onclick.
Je souhaiterai que l'image apparue sur le onmouseover reste lorsqu'il y a eu un click!
Il y a donc un conflit entre le onmouseOut et le Onclick, cependant, je ne pense aps pouvoir utiliser une variable car, au total, j'ai plus de 30 images (correspondant dc à des rubriques ou sous-rubriques)!!!
Le site est visible ici : www.deroutes.fr/test/index.php
Je vous mets le code, cela me semble le mieux.
Merci de votre aide
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Le site du groupe Déroutés</title>
<style type="text/css">
body {margin:0 ;
padding:0;
font:Arial,Sans-serif;
scrollbar-arrow-color:#FFFFFF;
scrollbar-face-color:#010101;
scrollbar-highlight-color:#848484;
scrollbar-3dlight-color:#686767;
scrollbar-shadow-color:#4D4C4C;
scrollbar-darkshadow-color:#3E3E3E;
scrollbar-track-color:#202020;} /* marges intérieures et extérieures de la page à 0 */
.menu-general { /* défini les boites qui comprenent chaque menu de base */
float:left ; /* Les boite sont calées à gauche */
height: 40px ;
width:100px ; /* largeur des boites du menu de base */
padding:0 ; /* marges intérieures à 0 */
margin: 0 ; /* marges extérieures à 0 */
#sous-menu1, #sous-menu2, #sous-menu3, #sous-menu4 { /*défini les 4 boites des 4 sous-menues */
clear:left;
display: none; /* les sous-menus ne sont pas affichés */
margin: 0; /* marges extérieures à 0 */
padding : 0; /* marges intérieures à 0 */
/*position : absolute ; boite positionnée par rapport à la boite parent, ici l'écran */
top : 100px; /* Début (par rapport au haut de page) des sous-menus */
left : 0px; /* Début (par rapport à la gauche de la page) des sous-menus */
width : 100% ;/* largeur des sous-menus par rapport à la boite parent (ici la page)*/
rehtakulveets
Messages postés15Date d'inscriptionmardi 14 novembre 2006StatutMembreDernière intervention20 mars 2009 6 mars 2009 à 15:04
Bon, c'est super, ca marche niquel!! MErci Petole Team...
Cependant, j'aimerai développer ce code, je sais qu'il ne me manque pas grand chose mais, là encore, mes compétences sont dépassées.
Mes 3 questions sont donc les suivantes:
-comment faire pour que lorsque l'on clique sur le lien 2 APRES avoir cliqué sur le lien 1, le lien 1 disparaisse?
Et, question qui découle de la première:
-comment faire pour que lorsque l'on survole le lien 2 APRES avoir cliqué sur le lien 1, le lien 1 disparaisse mais réapparaisse lorsque l'on quitte le survol du lien 2?
- comment mettre des images à la place du texte "LIEN" et LIEN2" et appeller également des images aux survols? Il suffit de remplacer simplement les this_.innerHTML = "LIEN" par du this_.img src = "LIEN.jpg"?
Merci d'avance.
Je mets un petit bout de code développé avec 2 liens!!! ;)
Bon WE à tous
<html>
<head>
<script type="text/javascript">
//----------------
function _0(this_){
this_.onmouseout= function(){};
}
//----------------
function _1(this_){
this_.innerHTML = "OVER LIEN";
}
//----------------
function _2(this_){
this_.innerHTML = "LIEN";
}
//----------------
function _3(this_){
this_.innerHTML = "LIEN SURVOL";
}
//----------------
function _4(this_){
this_.innerHTML = "LIEN2";
}
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 6 mars 2009 à 16:50
Bonjour,
Ce que je t'avais mis était un exemple.
...il ne faut pas multiplier les fonctions identiques mais en faire une
générique exemple Change_Texte
//---------------------------------
function Change_Texte( this_, txt_){
this_.innerHTML =
txt_;
}
avec un appel du type
onmouseover = "Change_Texte( this, 'OVER Lien');"
qui remplace les fonctions _1 et _2, avec cette fois ci le
passage en paramétre du texte à afficher.
Réponse
#1
Lors du click sur le lien_2 il faut tester si le lien_1 a été
cliqué et si oui le faire disparaître en modifiant son style.display.
Dans ce cas il faut gérer une
propriété, par exemple clic, et la mettre à true lorsque l'on clique sur le lien, la fonction
devient par exemple
//----------------------
function
Fct_Clic(this_){
this_.onmouseout = function(){};
this_.clic = true;
}
de la sorte on saura si elle à déjà été cliquée, ceci n'est
qu'une façon de faire il y en a bien d'autres.
Réponse #2 Ce n'est qu'une question de logique
et de gestion des opérations liées aux événements et à leurs réinitialisations
correctes.
rehtakulveets
Messages postés15Date d'inscriptionmardi 14 novembre 2006StatutMembreDernière intervention20 mars 2009 6 mars 2009 à 17:24
Merci beaucoup Petole Team de cette réponse bien complémentaire...
Je la comprends, mais n'arrive pas à la mettre en place, ca dépasse vraiment ma compréhension -limitée-.
Est-ce trop te demander de m'écrire juste les quelques lignes toutes à la suite et d'utiliser, au lieu du LIEN, une image1 pour l'état normal et une image2 pour le survol?
D'avance, encore merci pour ton aide...et bon WE!!!
M.P
Vous n’avez pas trouvé la réponse que vous recherchez ?
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 9 mars 2009 à 17:27
Bonjour,
une des 1000 et une façons de procéder
pour faire un RollOver avec des images
la fonction :
//------------------------------- function
Swap_Image( this_, src_){
this_.src = src_;
}
l'appel :
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 11 mars 2009 à 18:22
Bonjour,
<table bgcolor= "#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">----, J'ai écrit ceci, mais bien sûr, ca marche
pas...</td>
</td></tr></tbody></table>question de
logique...
Ta fonction Change_Image ne fait rien
d'autre que la même chose que la fonction Change_Texte que je t'ai mis plus haut, donc pas ce que
visiblement tu veux.
Si tu veux changer une IMG
contenue dans un lien, A, il te faut d'abord
atteindre l'objet avant de lui changer sa src.
On
y accéde via la propriété firstChild des
objets.
La fonction Change_Image devient ainsi
celle ci
//---------------------------------
function
Change_Image( this_, src_){
this_.firstChild.src = src_;
}
quant à la Fct_Clic elle se met sur
l'événement onclick du lien.
;O)
rehtakulveets
Messages postés15Date d'inscriptionmardi 14 novembre 2006StatutMembreDernière intervention20 mars 2009 12 mars 2009 à 10:46
Merci encore Petole Team de ces infos précieuses.
Je pense avoir pigé l'essentiel.
J'ai réécrit un code, je pense qu'il s'agit de celui dont j'ai besoin, mais il y a encore un souci, peux tu me dire où? Je sens que je ne suis pas loin.
J'avais une question supplémentaire : où dois-je rajouter la ligne de code du lien (de la page que je souhaite ouvrir) lorsque l'on clique sur l'image?
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 13 mars 2009 à 15:13
Bonjour,
<table bgcolor= "#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">----, ...mais il y a encore un
souci...</td>
</td></tr></tbody></table>il te
faut passer aux fonctions une chaine de caractères aussi
onmouseout = "Change_Image( this,
image1.gif);"
devient
onmouseout = "Change_Image( this, " image1.gif");"
concernant la fonction Fct_Click
onclick = "Fct_clic( this,image2.gif);"
le 2nd paramétre ne
sert à rien si ce n'est à générer une erreur donc
onclick = "Fct_clic( this);"
<table bgcolor="#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">----, ...où dois-je rajouter la ligne de code du
lien... </td>
</td></tr></tbody></table>d'après
ce que je lit plus haut ce serait un truc du style
[la_page.html ]
;O)
rehtakulveets
Messages postés15Date d'inscriptionmardi 14 novembre 2006StatutMembreDernière intervention20 mars 2009 13 mars 2009 à 15:40
Merci Petole Team.
Avec tout ça, j'aurai pensé y arriver, et pourtant des problèmes subsistent :
- Au survol, mon image1 ne se transforme pas en image2.
- Au click, j'ouvre bien ma page ds une target, mais l'image1 ne se transforme pas non plus en image2 (ce que je souhaite depuis le début)!!!
rehtakulveets
Messages postés15Date d'inscriptionmardi 14 novembre 2006StatutMembreDernière intervention20 mars 2009 13 mars 2009 à 16:15
Ok, c'est bon, le problème d'apparition/disparition de mon image2 est résolu.
Par contre, et cela n'a pas l'air normal, une fois cliquée, lorsque je sors de l'image2, elle redevient image1.
Cela veut donc dire que le mouseOut prend tjs le dessus sur le OnClick?
rehtakulveets
Messages postés15Date d'inscriptionmardi 14 novembre 2006StatutMembreDernière intervention20 mars 2009 13 mars 2009 à 16:47
En effet, Petole Team, tu avais encore une fois raison, attention à la casse...
Merci beaucoup pour tes conseils.
J'aurai juste une dernière chose à te demander.
Ce code est prévu pour un menu, je vais donc avoir plusieurs titres (représentés par des images).
Lorsque je survole ou clique sur mon image1, elle se transforme en image2, ca, c'est réglé!
J'aimerai maintenant que lorsque je survole et clique sur mon image3 (qui deviendra alors image4), mon image2 redevienne image1.
Je me doute que c'est une histoire d'architecture entre les fonctions, mais je suis, là encore, dépassé!!!
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 14 mars 2009 à 15:21
Bonjour,
<table width= "100%" bgcolor="#e6effe" border="0" cellpadding="5" cellspacing="0">----, J'aimerai maintenant que lorsque je survole et
clique sur mon image3 ..., mon image2 redevienne
image1</td>
</td></tr></tbody></table>dans ce cas
il te faut pouvoir accéder aux autres Objets à partir du clique sur l'un deux,
donc mettre des ID sur chacun de tes liens pour les
récupérer via document.getElementById .
Les
mettre sous la forme, par exemple, A_ numero_chrono , ce qui donnerait
...etc...
Comme tu
veux restituer l'image initiale, il te faut également sauvegarder, pour chaque
objet sa référence, cela peut se faire dans la fonction Change_Image, et ce lors du premier appel.
Ensuite
tu la restitues en fonction de l'objet initialement cliqué.
Pour restituer
tu as au moins 2 options
- Sauvegarde de l'objet cliqué dans une variable
globale, puis restitution pour celui ci sur le click d'un autre...
-
Restitution pour tous les objets avec une ID ="A_numero_chrono", sans avoir donc à sauvegarder
l'objet initialement cliqué...
;O)
rehtakulveets
Messages postés15Date d'inscriptionmardi 14 novembre 2006StatutMembreDernière intervention20 mars 2009 16 mars 2009 à 11:54
WAOUH!!!!
Là, Petole Team, sincérement, je nage complet...
Un petit bout de code plus long pour amorcer ne serait pas de refus, si toutefois tu as le temps!!! ;)
rehtakulveets
Messages postés15Date d'inscriptionmardi 14 novembre 2006StatutMembreDernière intervention20 mars 2009 20 mars 2009 à 13:55
Pour faire court, j'arrive à modifier des codes que je récupère et les mettre à ma sauce, parce que l'"architecture" du code est déjà faite...
Sans rien, je ne saurai pas te dire où je dois mettre le document.GetElementbyID, par exemple, si c'est dans <head> ou , puis, également où le situer par rapport à l'image que je veux mofidier...
Je suis dépassé aussi par les ID...
Donc, c'est pour cela que je te demander un bout de code + complet, avec au moins les balises <head> et !!! ;o)