Plusieurs button qui ouvre le premier (HTML + CSS)

Fermé
martel8282 Messages postés 1 Date d'inscription jeudi 4 août 2016 Statut Membre Dernière intervention 4 août 2016 - Modifié par martel8282 le 4/08/2016 à 19:01
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 30 août 2016 à 16:33
Voici le code:

<style>

.dropbtn {
background-color: #240073;
color: white;
padding: 16px;
font-size: 16px;
border: none;
cursor: pointer;
}

.dropbtn:hover, .dropbtn:focus {
background-color: #000000;
}

.dropdown {
position: relative;
display: inline-block;
}

.dropdown-content {
display: none;
position: absolute;
background-color: #240073;
min-width: 160px;
overflow: auto;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
}

.dropdown-content a {
color: WHITE;
padding: 12px 16px;
text-decoration: none;
display: block;
}


.dropdown a:hover {background-color: #240073}

.show {display:block;}
</style>
<div class="dropdown">

<button onclick="myFunction()" class="dropbtn">
HOME
</button>

<div class="dropdown-content" id="myDropdown">
<a value="Lien NHL" href="#pre" rel="nofollow" target="_blank">PROFIL</a> <a value="Lien NHL" href="#sa" rel="nofollow" target="_blank">MESSAGES</a> <a value="Lien NHL" href="#se" rel="nofollow" target="_blank">MEMBRES</a> <a value="Lien NHL" href="#se" rel="nofollow" target="_blank">GROUPES</a>
</div>
.
</div>
<script>
/* When the user clicks on the button,
toggle between hiding and showing the dropdown content */
function myFunction() {
document.getElementById("myDropdown").classList.toggle("show");
}

// Close the dropdown if the user clicks outside of it
window.onclick = function(event) {
if (!event.target.matches('.dropbtn')) {

var dropdowns = document.getElementsByClassName("dropdown-content");
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
}
}
</script>


Question : Jutilise 4 fois de suite ce code (sauf avec des listes differente). Le probleme est que si je click le Button2 pour ouvrir cette list, le click ouvre la liste du button1... et ainsi de suite. Comment faire pour que chaque button ouvre leur liste respective?

Merci d'avance
A voir également:

2 réponses

Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 209
Modifié par Fallentree le 30/08/2016 à 16:56
je dirais que les buttons ne sont pas differenciés.
<button onclick="myFunction()" class="dropbtn">

colles y un id ou un name
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
30 août 2016 à 16:33
Bonjour,

Il faudrait que chaque bouton sache à quel DDL il correspond. Cela peut se faire dans son appel javascript, en passant en paramètre l'id de la DDL en question, et en différenciant les ID de tes DDL (par exemple en suffixant _1, _2, ...)

Comme ça :
<button onclick="myFunction('myDropdown_1')" class="dropbtn">HOME</button>
<div class="dropdown-content" id="myDropdown_1">
[...]
<button onclick="myFunction('myDropdown_2')" class="dropbtn">HOME</button>
<div class="dropdown-content" id="myDropdown_2">


Et, du coup, il faut modifier la définition de my_function :
function myFunction(ddl_id) {
    document.getElementById(ddl_id).classList.toggle("show");
}


Xavier
0