Je crée des menus déroulants sur lesquels il faut cliquer pour ouvrir. Ce code permet à l'utilisateur d'ouvrir les menus correctement. Le seul problème est que je n'ai pas encore compris comment fermer les menus en cliquant en dehors des menus. J'ai essayé d'ajouter le "document.onclick" montré, mais il prend effet même dans les menus.Comment fermer un menu javascript
Je pense que je dois empêcher que document.onclick soit capturé par d'autres éléments, mais je ne suis pas sûr de savoir comment utiliser cette plateforme. Quelqu'un peut-il me montrer comment?
<script type="text/javascript">
var lastOpenedMenuId = null;
function showMenu(menuId) {
if (lastOpenedMenuId != null && lastOpenedMenuId != menuId) {
hideLastOpenedMenu();
}
setMenuVisibility(menuId, 'visible');
lastOpenedMenuId = menuId;
}
function hideMenu(menuId) {
setMenuVisibility(menuId, 'hidden');
}
function hideLastOpenedMenu() {
if (lastOpenedMenuId != null) {
hideMenu(lastOpenedMenuId);
}
}
function setMenuVisibility(menuId, visibleOrHidden) {
var menuElement = document.getElementById(menuId);
menuElement.style.visibility = visibleOrHidden;
}
document.onclick = hideLastOpenedMenu;
</script>
<div onmousedown="showMenu('foodmenu')"><a>FOOD</a></div>
<div id="foodmenu" onmouseup="hideMenu('foodmenu');">
<a href="#meat">Meat</a>
<A href="#tofu">Tofu</a>
</div>
Merci d'avance.
J'ai fait des progrès et ont reformulé la question ici: How to stop onclick event in div from propagating to the document?
Merci. Malheureusement, je n'ai pas de mise en page comme ça. J'ai besoin que l'utilisateur puisse cliquer dessus, dessous ou de chaque côté du menu. – dougkramer