Clic de lien
toto
-
Dalida Messages postés 7114 Date d'inscription Statut Contributeur Dernière intervention -
Dalida Messages postés 7114 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'ai un souci avec mon menu de site web. J'aurais voulu qu lorsque je clic sur un lien de mon menu, celui-ci change de couleur et garde cette couleur jusqu'a ce que je clic sur un autre element du menu. pouvez vous m'aider s'il vous plait
j'ai un souci avec mon menu de site web. J'aurais voulu qu lorsque je clic sur un lien de mon menu, celui-ci change de couleur et garde cette couleur jusqu'a ce que je clic sur un autre element du menu. pouvez vous m'aider s'il vous plait
A voir également:
- Clic de lien
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
- Verificateur de lien - Guide
- Cliquez sur ce lien. en n'utilisant que le clavier, quel mot obtenez-vous ? ✓ - Forum souris / Touchpad
- Atout clic - Télécharger - Éducatifs
22 réponses
Mon html:
<!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>Site de sasha</title>
<script src="cliclien.js" type="text/javascript"></script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<div >
<a id="lien" class="normal" href="#" target="gauche" value="societe" name="hello">Hello</a> </li>
<a id="lien" class="normal" href="#" target="gauche" value="nada" name="salut">Salut</a> </li>
<a id="lien" class="normal" href="#" target="gauche" value="yahou" name="bjr">Bjr</a> </li>
</div>
</body>
</html>
Mon js:
window.onload = init ;
function init()
{
document.getElementById('lien'). /*<-ne pas laisse d'espace dans document.getElementById*/
addEventListener('click', changerClasse, true);
}
function changerClasse()
{
/*var lesliens = document.getElementsById('lien');
for(var i=0;i<lesliens.length;i++)
{
alert("bouclefor");
lesliens[i].setAttribute('class','normale');
}*/
this.setAttribute('class','selected');
}
C'est pas complet car en cliquant sur un lien mon code modifie la classe du lien mais ouvre aussi un nouvelle onglet sur lequel le lien na pas sa classe de changer .
<!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>Site de sasha</title>
<script src="cliclien.js" type="text/javascript"></script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<div >
<a id="lien" class="normal" href="#" target="gauche" value="societe" name="hello">Hello</a> </li>
<a id="lien" class="normal" href="#" target="gauche" value="nada" name="salut">Salut</a> </li>
<a id="lien" class="normal" href="#" target="gauche" value="yahou" name="bjr">Bjr</a> </li>
</div>
</body>
</html>
Mon js:
window.onload = init ;
function init()
{
document.getElementById('lien'). /*<-ne pas laisse d'espace dans document.getElementById*/
addEventListener('click', changerClasse, true);
}
function changerClasse()
{
/*var lesliens = document.getElementsById('lien');
for(var i=0;i<lesliens.length;i++)
{
alert("bouclefor");
lesliens[i].setAttribute('class','normale');
}*/
this.setAttribute('class','selected');
}
C'est pas complet car en cliquant sur un lien mon code modifie la classe du lien mais ouvre aussi un nouvelle onglet sur lequel le lien na pas sa classe de changer .
Je veux en faite faire comme le menu de Comment ça marche (Accueil, forum astuces ....). lorsqu'on est dans un onglet, celui-ci change de couleur et lorsquon clic un autre onglet, le précédent revient a sa valeur initiale
Tien à mettre dans le css, je ne savais pas que ça existait:
Voici l'explication fournie avec le bout de code:
"Finalement, la classe suivante est utilisée pour mettre en valeur l’élément de menu de la page actuellement affichée :"
Et le code:
.menu li#current a {
color: #B22819; /* Couleur de texte */?
}
J'ai pas eu le temps de l'essayer, mais je voit ça de mon coté.
Voici l'explication fournie avec le bout de code:
"Finalement, la classe suivante est utilisée pour mettre en valeur l’élément de menu de la page actuellement affichée :"
Et le code:
.menu li#current a {
color: #B22819; /* Couleur de texte */?
}
J'ai pas eu le temps de l'essayer, mais je voit ça de mon coté.
salut,
tu peux peut être le coder en dur dans le HTML :
ou alors mieux vaut utiliser les classes en bouclant sur tous les liens du document :
et dans ton HTML tu définis la classe des liens à traiter avec "menu_js".
en CSS il faudra coder :
ça reste à tester, si tu ne l'as pas encore, installe FireBug, il te montrera les erreurs de JS.
tu peux peut être le coder en dur dans le HTML :
<a onclick="changerClasse();" id="lien" class="normal" href="#" target="gauche" value="societe" name="hello">Hello</a>
ou alors mieux vaut utiliser les classes en bouclant sur tous les liens du document :
window.onload = init ;
var links = array();
function init()
{
var all_links = document.getElementsByTagName('a');
for(link in all_links)
{
if(link.getAttribute('class') == 'menu_js')
{
link.addEventListener('click', changerClasse, true);
links[] = link;
}
}
}
function changerClasse()
{
for(link in links)
{
link.setAttribute('class','menu_js');
}
this.setAttribute('class','menu_js_selected');
}
et dans ton HTML tu définis la classe des liens à traiter avec "menu_js".
en CSS il faudra coder :
a.menu_js{}
a.menu_js_selected{}
ça reste à tester, si tu ne l'as pas encore, installe FireBug, il te montrera les erreurs de JS.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Personne ne veut m'aider?? S'il vous plait. je cherche depuis longtemps sur les forum et je trouve que des questions qui restent sans réponse. Est-il possible de le faire en PHP ou en javascript??? HELP
salut toto
-si tu veux que la couleur change au passage de la souris tu dois utiliser a:hover
-si tu veux que la couleur change au moment du clic tu dois utiliser a:active
-si tu veux que la couleur change lorsque le lien est sélectionné a:focus
-si tu veux que la couleur change au passage de la souris tu dois utiliser a:hover
-si tu veux que la couleur change au moment du clic tu dois utiliser a:active
-si tu veux que la couleur change lorsque le lien est sélectionné a:focus
voila comment le site comment ca mache le fait:
ils renvoie l'information du clic sur un lien à une page php comme ça et la page change les classes des liens en rien du tout et ensuite celle du lien cliquer en selected:
<form id="search" action="http://www.commentcamarche.net/search/search.php3" method="get" name="search">
puis dans le code css ils disse que si un lien est selected faire ce qui est entre guillemet:
a.selected {ccm.css?...903051645 (ligne 1905)
background-image:url(http://static.commentcamarche.net/www.commentcamarche.net/sprites/sprite_vert3.png);
}
ce qui donne dans le html ca:(note que tu ne doit pas mettre class="selected" ici c le php qui le fera)
<ul id="menuList1">
<li>
<a href="/">Accueil</a>
</li>
<li>
<a class="selected" href="/forum/">Forum</a>
</li>
voila c'est un peu brouillon.
ils renvoie l'information du clic sur un lien à une page php comme ça et la page change les classes des liens en rien du tout et ensuite celle du lien cliquer en selected:
<form id="search" action="http://www.commentcamarche.net/search/search.php3" method="get" name="search">
puis dans le code css ils disse que si un lien est selected faire ce qui est entre guillemet:
a.selected {ccm.css?...903051645 (ligne 1905)
background-image:url(http://static.commentcamarche.net/www.commentcamarche.net/sprites/sprite_vert3.png);
}
ce qui donne dans le html ca:(note que tu ne doit pas mettre class="selected" ici c le php qui le fera)
<ul id="menuList1">
<li>
<a href="/">Accueil</a>
</li>
<li>
<a class="selected" href="/forum/">Forum</a>
</li>
voila c'est un peu brouillon.
Je fait comment dans ma page PHP?
if($id=="accueil"){ //ça c'est le lien que je vien de cliquer
class=="selected"
}
J'ai ça dans mon html:
<ul id="menu_horizontal">
<li class="menu"><a href="accueil.php"> <img border="0" src="images/titres_accueil/accueil.gif"> </a></li>
je ne vois pas comment je peux modifier la class en selected
if($id=="accueil"){ //ça c'est le lien que je vien de cliquer
class=="selected"
}
J'ai ça dans mon html:
<ul id="menu_horizontal">
<li class="menu"><a href="accueil.php"> <img border="0" src="images/titres_accueil/accueil.gif"> </a></li>
je ne vois pas comment je peux modifier la class en selected
voila en cherchant pour autre chose je suis tomber sur un ancien cour:
dans ton html:
<script src="comport.js" (plus la suite)
<div id="lien">
<a href="hello.html">Hello</a>
</div>
dans ta page javascript:
window.onload = init ;
function init()
{
document.getElementBy Id('lien').
addEventListener('click', changerClasse, true);
}
function changerClasse()
{
(la il faudrait mettre la même ligne que celle du dessous pour dire que tout les liens prennent la classe->normal ou un autre nom que tu reutilisera dans ton css
this.setAttribute('class','selected');
}
dans ton html:
<script src="comport.js" (plus la suite)
<div id="lien">
<a href="hello.html">Hello</a>
</div>
dans ta page javascript:
window.onload = init ;
function init()
{
document.getElementBy Id('lien').
addEventListener('click', changerClasse, true);
}
function changerClasse()
{
(la il faudrait mettre la même ligne que celle du dessous pour dire que tout les liens prennent la classe->normal ou un autre nom que tu reutilisera dans ton css
this.setAttribute('class','selected');
}
Je croit qu'en mettant cette ligne a la place de "la il faudrait mettre la même ligne que celle du dessous pour dire que tout les liens prennent la classe->normal ou un autre nom que tu réutilisera dans ton css" dans mon mess précédant ça devrait marcher.
document.getElementById('lien').setAttribute('class','normal');
document.getElementById('lien').setAttribute('class','normal');
j'ai fait ça mais ça ne marche pas:
<script language="javascript">
window.onload = init ;
function init()
{
document.getElementBy Id('lien').
addEventListener('click', changerClasse, true);
}
function changerClasse()
{
document.getElementById('lien').setAttribute('class','menu');
this.setAttribute('class','selected');
}
</script>
<div id="lien">
<li class="menu"><a href="frame1.php?id=societe" target="gauche" value="societe" name="menu">Hello</a> </li>
</div>
<script language="javascript">
window.onload = init ;
function init()
{
document.getElementBy Id('lien').
addEventListener('click', changerClasse, true);
}
function changerClasse()
{
document.getElementById('lien').setAttribute('class','menu');
this.setAttribute('class','selected');
}
</script>
<div id="lien">
<li class="menu"><a href="frame1.php?id=societe" target="gauche" value="societe" name="menu">Hello</a> </li>
</div>
Je suppose que tu veux quelques chose comme ça: http://arthezius.fr/accueil.php?page=creat
Pour le faire je me sert du fait que le contenu de ma page est défini par la variable dans l'url ?page=
Du coup il me suffit de faire une simple condition en PHP.
Voici un exemple simple.
J'espère que ça pourra t'aider.
Pour le faire je me sert du fait que le contenu de ma page est défini par la variable dans l'url ?page=
Du coup il me suffit de faire une simple condition en PHP.
if($_GET['page'] == 'page1'){echo'<p class="actif"><a href="index.php?page=page1"Onglet 1</p>';}
else{echo'<p class="inactif"><a href="index.php?page=page1"Onglet 1</p>';}
if($_GET['page'] == 'page2'){echo'<p class="actif"><a href="index.php?page=page2"Onglet 2</p>';}
else{echo'<p class="inactif"><a href="index.php?page=page2"Onglet 2</p>';}
Voici un exemple simple.
J'espère que ça pourra t'aider.
j'ai effectivement 2 frames comme toi. un menu a gauche et ma page au centre
Mais en faite j'ai aussi un menu en haut. quand je clic sur un lien en haut, un sous menu s'affiche a gauche et je voudrai que le lien en haut reste different des autres pour montrer que je suis bien dans ce menu.
mon clic en haut modifie ma frame de gauche
mon clic a gauche modifie ma page du milj'ai du mal a interpréter vos methodes et a les utiliser.
Mais en faite j'ai aussi un menu en haut. quand je clic sur un lien en haut, un sous menu s'affiche a gauche et je voudrai que le lien en haut reste different des autres pour montrer que je suis bien dans ce menu.
mon clic en haut modifie ma frame de gauche
mon clic a gauche modifie ma page du milj'ai du mal a interpréter vos methodes et a les utiliser.
pour appeler la page javascript a tu fait qqchose comme ça?
<script src="comportement1.js" type="text/javascript"></script>
Sinon dans ta page de javascript je croit que tu n'a pas besoin de:
<script language="javascript">
mais pour ça je suis pas sur.
<script src="comportement1.js" type="text/javascript"></script>
Sinon dans ta page de javascript je croit que tu n'a pas besoin de:
<script language="javascript">
mais pour ça je suis pas sur.
oui j'ai bien fait comme ça
j'ai mis ça dans le code html :
<script src="comport.js" type="text/javascript"></script>
<div id="lien">
<a href="frame1.php?id=societe" target="gauche" value="societe" name="menu">Hello</a> </li>
</div>
et ça dans le javascript :
window.onload = init ;
function init()
{
document.getElementBy Id('lien').
addEventListener('click', changerClasse, true);
}
function changerClasse()
{
document.getElementById('lien').setAttribute('class','menu');
this.setAttribute('class','selected');
}
mais il ne passe jamais a "selected"
j'ai mis ça dans le code html :
<script src="comport.js" type="text/javascript"></script>
<div id="lien">
<a href="frame1.php?id=societe" target="gauche" value="societe" name="menu">Hello</a> </li>
</div>
et ça dans le javascript :
window.onload = init ;
function init()
{
document.getElementBy Id('lien').
addEventListener('click', changerClasse, true);
}
function changerClasse()
{
document.getElementById('lien').setAttribute('class','menu');
this.setAttribute('class','selected');
}
mais il ne passe jamais a "selected"
Je pense qu'on en est pas loin. le javascript a l'air d'etre bon. c'est ce que je veux, lorsqu'on clic sur un lien, tous les liens se mettent en normal et le lien cliqué se met en selectde. donc c'est bien ça mais bizarement, je ne vois aucun effet, on dirais que les liens n'arrivent pas a se mettre en selected.
Voila ce qui se passe chez moi je double clic sue le fichier cliclien.html ce qui ouvre une page firefox qui comprend trois lien en jaune si je clique sur le premier lien (j'ai fait l'erreur de mettre le même id à chaque lien donc ça ne fonctionne pas pour les autre) cela m'ouvre un autre onglet avec les trois lien en jaune et class=normal mais si je revient sur l'onglet précédent le premier lien est en vert et class=selected
comment peut-on faire pour que cela fonctionne avec tous les liens?
car si je donne un ID different a chaque lien, cela ne fonctionne plus puisque dans le javascript, la fonction n'est définie que lorsque l'ID='lien' donc cela fonctionne que si le nom de l'ID=lien.
Par ailleurs merci pour ta reponse
car si je donne un ID different a chaque lien, cela ne fonctionne plus puisque dans le javascript, la fonction n'est définie que lorsque l'ID='lien' donc cela fonctionne que si le nom de l'ID=lien.
Par ailleurs merci pour ta reponse
je suis en train de voir pour integrer une boucle for qui passe par tout les nom de lien si bien sur on les nomme lien1, lien2 , etc
Mon code actuel(qui ne fontionne pas):
window.onload = init ;
function init()
{
alert("init");
var getelem='';
var getelems = array();
while(getelem!='')
{ alert("while");
for(var i=0;i<100;i++)
{
alert("for");
var getelem = document.getElementsById('lien.[i]');
getelems[]=getelem;
//lesliens[i].setAttribute('class','normale');
}
}
//document.getElementById('lien').
alert("eventlistener");
addEventListener('click', changerClasse, true);
}
function changerClasse()
{
/*var lesliens = document.getElementsById('lien');
for(var i=0;i<lesliens.length;i++)
{
alert("bouclefor");
lesliens[i].setAttribute('class','normale');
}*/
this.setAttribute('class','selected');
}
Mon code actuel(qui ne fontionne pas):
window.onload = init ;
function init()
{
alert("init");
var getelem='';
var getelems = array();
while(getelem!='')
{ alert("while");
for(var i=0;i<100;i++)
{
alert("for");
var getelem = document.getElementsById('lien.[i]');
getelems[]=getelem;
//lesliens[i].setAttribute('class','normale');
}
}
//document.getElementById('lien').
alert("eventlistener");
addEventListener('click', changerClasse, true);
}
function changerClasse()
{
/*var lesliens = document.getElementsById('lien');
for(var i=0;i<lesliens.length;i++)
{
alert("bouclefor");
lesliens[i].setAttribute('class','normale');
}*/
this.setAttribute('class','selected');
}
voici le CSS:
a.selected{
text-decoration : underline;
color:green;
}
a.normal{
text-decoration : none;
color:yellow;
}