Table des matières
Idées de mise en œuvre de base
Conception de structures HTML
Définition du style CSS
Implémentation de la logique JavaScript
Avantages et considérations
Résumer
Maison interface Web tutoriel HTML Tutoriel sur la mise en œuvre efficace de la commutation dynamique du contenu des menus déroulants à l'aide de JavaScript

Tutoriel sur la mise en œuvre efficace de la commutation dynamique du contenu des menus déroulants à l'aide de JavaScript

Oct 09, 2025 pm 11:30 PM

Tutoriel sur la mise en œuvre efficace de la commutation dynamique du contenu des menus déroulants à l'aide de JavaScript

Ce didacticiel vise à vous guider sur la façon d'utiliser JavaScript et du HTML/CSS concis pour implémenter une fonction de changement de menu déroulant dynamique. Lorsque l'utilisateur effectue une sélection dans le menu déroulant principal, le contenu du sous-menu correspondant sera mis à jour et affiché en temps réel, tout en garantissant qu'un seul sous-menu est affiché, améliorant ainsi l'expérience utilisateur et la maintenabilité du code.

Dans les applications Web modernes, il est courant d’afficher dynamiquement différents contenus en fonction des sélections des utilisateurs. Par exemple, dans un formulaire, différentes sous-options sont affichées en fonction de la catégorie sélectionnée par l'utilisateur. L'approche traditionnelle peut consister à pré-créer des éléments HTML indépendants pour chaque option, puis à contrôler leur affichage et leur masquage via JavaScript. Cependant, lorsque le nombre d’options augmente, cette approche conduit à des structures DOM redondantes et la logique JavaScript devient complexe et difficile à maintenir. Ce didacticiel présentera une solution plus efficace et plus élégante pour obtenir une commutation flexible du contenu du menu déroulant via un élément d'espace réservé commun et une gestion dynamique des données JavaScript.

Idées de mise en œuvre de base

L'idée principale de cette solution est la suivante : au lieu de créer des éléments HTML distincts pour chaque sous-menu possible, créez simplement un élément d'espace réservé générique. Lorsque la sélection dans le menu principal change, JavaScript mettra à jour dynamiquement l'étiquette et les options de cet élément d'espace réservé en fonction de la valeur sélectionnée et contrôlera son état d'affichage. Cette approche simplifie grandement la structure HTML et améliore la maintenabilité du code JavaScript.

Conception de structures HTML

Tout d’abord, nous devons définir le menu déroulant principal et un espace réservé générique pour afficher le contenu dynamique.

 <tableau>
  <tr>
    <td>
      <label>ABC :</label>
      <select id="abcid">
        <option value="" selected d>Sélectionner-</option>
        <option value="A">A</option>
        <option value="B">B</option>
        <option value="C">C</option>
      électionner>
    </select>
</td>
  </tr>
  <tr class="noDisplay">
    <td>
      étiquette>
      <s>
        <option value="" selected d>Sélectionner-</option>
      </s>électionner>
    </td>
  </tr>
</tableau>

Description de la structure :

  • Menu déroulant principal (#abcid) : Responsable du déclenchement des événements de commutation. L'option désactivée sélectionnée value="" agit comme une invite par défaut pour empêcher l'utilisateur de la sélectionner.
  • Ligne de sous-menu générique () : Il s'agit de l'espace réservé de clé.
    • Il est initialement livré avec la classe noDisplay, qui est masquée via CSS.
    • Contient un élément
    • Contient un élément

    Définition du style CSS

    Afin d'obtenir un masquage initial et un affichage dynamique, nous avons besoin d'une simple classe CSS.

     .noDisplay {
      affichage : aucun ;
    }

    Description du modèle :

    • La classe .noDisplay définit la propriété display de l'élément sur none, le rendant invisible sur la page et n'occupant aucun espace.

    Implémentation de la logique JavaScript

    JavaScript est au cœur de la commutation dynamique. Il est chargé de surveiller les modifications dans le menu principal et de mettre à jour le contenu du sous-menu en fonction des modifications.

     const
      selectABC = document.querySelector('#abcid'), // Récupère le menu déroulant principal trSelect2 = document.querySelector('tr.noDisplay'), // Récupère la ligne d'espace réservé du sous-menu label_2 = trSelect2.querySelector('label'), // Récupère l'élément label du sous-menu select_2 = trSelect2.querySelector('select'), // Récupère le élément de menu déroulant du sous-menu // Définir les données dans différentes situations de sélection selCases = {
        A : { label : 'Aaa', sels:[ {k : '1', v:'Alex' }, {k : '2', v:'Jack' } ] },
        B : { label : 'Bbb', sels:[ {k : 'w', v:'US' }, {k : 'x', v:'Australie' }, {k : 'y', v:'Inde' } ] },
        C : { label : 'Ccc', sels :[ {k : '$', v:'Bleu' }, {k : '£', v:'Vert' }, {k : '§', v:'Rouge' } ] }
      } ;
    
    // Écoute l'événement change du menu déroulant principal selectABC.onchange = e => {
      // Efface toutes les options dans le sous-menu déroulant, ne laissant que la première option par défaut select_2.length = 1;
      //Réinitialise l'état sélectionné du sous-menu déroulant à la première option par défaut select_2.selectedIndex = 0;
    
      // Mise à jour du texte de l'étiquette du sous-menu en fonction de la valeur de sélection du menu principal // selectABC.value correspond à 'A', 'B', 'C'
      label_2.textContent = selCases[selectABC.value].label;
    
      // Parcourez les données correspondantes et ajoutez dynamiquement de nouvelles options au sous-menu déroulant selCases[selectABC.value].sels.forEach(({k,v}) => select_2.add( new Option(v,k)) );
    
      // Supprime la classe .noDisplay et rend le sous-menu visible trSelect2.classList.remove('noDisplay');
    } ;

    Explication détaillée du code JavaScript :

    1. Acquisition d'éléments DOM :
      • selectABC : obtenez le menu déroulant principal avec l'ID abcid.
      • trSelect2 : récupère l'élément avec la classe noDisplay, qui est le conteneur du sous-menu.
      • label_2 : récupérez l'élément
      • select_2 : récupère l'élément
      • Structure des données (selCases) :
        • Il s'agit d'un objet JavaScript utilisé pour stocker les données correspondant aux différentes options du menu principal (« A », « B », « C »).
        • Chaque clé (telle que 'A') correspond à un objet, contenant :
          • label : Le texte du titre du sous-menu.
          • sels : Un tableau contenant les données d’option du sous-menu. Chaque option est un objet {k : 'value', v : 'text'}, k est la valeur réelle de l'option (attribut value) et v est le texte affiché.
        • Cette structure rend la gestion des données claire et facile à étendre.
      • Écoute d'événements (selectABC.onchange) :
        • Lorsque la valeur de selectABC change, l'événement onchange est déclenché et la logique de la fonction de flèche est exécutée.
      • Logique de mise à jour dynamique :
        • select_2.length = 1; : C'est une manière intéressante d'effacer les options du menu déroulant. Il définira le nombre d'options dans le menu déroulant sur 1, ce qui conservera uniquement la première option (par défaut "Sélectionner-") et supprimera toutes les options suivantes.
        • select_2.selectedIndex = 0; : garantit que la sous-liste déroulante est réinitialisée à la première option par défaut après chaque mise à jour pour éviter de conserver la dernière valeur sélectionnée.
        • label_2.textContent = selCases[selectABC.value].label; : selon la valeur de sélection actuelle (selectABC.value) du menu principal, supprimez l'étiquette correspondante de l'objet selCases et mettez à jour le texte de l'étiquette du sous-menu.
        • selCases[selectABC.value].sels.forEach(({k,v}) => select_2.add( new Option(v,k)) ); : Parcourez le tableau d'options du sous-menu correspondant dans selCases. Pour chaque paire {k, v}, créez un nouvel objet Option (new Option(text, value)) et ajoutez-le à select_2.
        • trSelect2.classList.remove('noDisplay'); : Enfin, supprimez la classe noDisplay du conteneur de sous-menu pour la rendre visible.
      • Avantages et considérations

        Avantages :

        • Structure HTML concise : évitez de créer beaucoup de HTML répété pour chaque sous-menu, et la structure DOM est plus claire.
        • Fonctionnement DOM efficace : n'utilisez qu'un élément de sous-menu commun au lieu de créer et de détruire plusieurs éléments à plusieurs reprises, ce qui entraîne de meilleures performances.
        • Facile à maintenir et à étendre : Toutes les données des sous-menus sont concentrées dans l'objet selCases de JavaScript. Pour modifier ou ajouter de nouvelles options, il vous suffit de mettre à jour cette structure de données sans modifier le HTML.
        • Meilleure expérience utilisateur : seuls les éléments nécessaires sont rendus lors du chargement de la page et le contenu dynamique est chargé à la demande.

        Choses à noter :

        • Source de données : dans les applications pratiques, les données des selCases seront généralement obtenues à partir de l'API back-end via des requêtes AJAX, plutôt que d'être codées en dur en JavaScript.
        • État initial : assurez-vous que le sous-menu est masqué lors du chargement de la page et que le menu principal dispose d'une option par défaut "Veuillez sélectionner".
        • Soumission du formulaire : Si la valeur de ce sous-menu dynamique doit être soumise au serveur, veuillez vous assurer que la valeur actuelle de select_2 peut être correctement obtenue lors de la soumission du formulaire.
        • Accessibilité : envisagez d'ajouter des attributs ARIA appropriés au contenu dynamique pour améliorer l'accessibilité.

        Résumer

        Grâce à la méthode présentée dans ce didacticiel, vous pouvez utiliser du JavaScript, du HTML et du CSS concis pour implémenter une fonction de commutation de menu déroulant dynamique efficace et facile à maintenir. Ce mode est très utile lorsqu'il s'agit de formulaires dynamiques et d'interfaces interactives reposant sur des sélections. Cela optimise non seulement la structure du code, mais améliore également l'expérience utilisateur. La maîtrise de cette technologie vous aidera à créer des applications Web plus puissantes et plus flexibles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Conseils CSS: Masquer précisément le contenu texte spécifique sans affecter les éléments parentaux Conseils CSS: Masquer précisément le contenu texte spécifique sans affecter les éléments parentaux Sep 16, 2025 pm 10:54 PM

Ce tutoriel détaille comment utiliser CSS pour masquer avec précision le contenu de texte spécifique dans les pages HTML pour éviter que le problème de l'ensemble de l'élément parent soit caché en raison de sélecteurs inappropriés. En ajoutant des classes CSS exclusives aux éléments d'emballage du texte cible et en utilisant l'affichage: aucun; Attribut, les développeurs peuvent obtenir un contrôle raffiné des éléments de page, en veillant à ce que seules les pièces requises soient masquées, optimisant ainsi la mise en page et l'expérience utilisateur.

Comment créer un hyperlien vers une adresse e-mail dans HTML? Comment créer un hyperlien vers une adresse e-mail dans HTML? Sep 16, 2025 am 02:24 AM

Usemailto: inhreftocreateeemaillinks.startwithforbasiclinks, ajouter? Sujet = & body = forpre-fillutContent, andincludemultipleaddressorcc =, bcc = foradvancedOptions.

Capturez les événements de Mousedown avec l'élément parent contenant des iframes interdomains: principes et limitations Capturez les événements de Mousedown avec l'élément parent contenant des iframes interdomains: principes et limitations Sep 20, 2025 pm 11:00 PM

Cet article explore le défi de capturer des événements de Mousedown sur des divs parents contenant des iframes interdomains. Le problème de base est que les politiques de sécurité du navigateur (politique d'origine même) empêchent l'écoute d'événements DOM directe sur le contenu IFRAME inter-domaine. Ce type de capture d'événements ne peut pas être réalisé à moins que le nom de domaine source IFRAME soit contrôlé et que COR soit configuré. L'article expliquera ces mécanismes de sécurité en détail et leurs limites aux interactions des événements et fourniront des alternatives possibles.

JavaScript Fonction externe Call Difficulté Analyse: Emplacement du script et spécification de dénomination JavaScript Fonction externe Call Difficulté Analyse: Emplacement du script et spécification de dénomination Sep 20, 2025 pm 10:09 PM

Cet article explore deux problèmes courants lors de l'appel des fonctions JavaScript externes dans HTML: un temps de chargement de script incorrect ne fait pas partie des éléments DOM, et la dénomination des fonctions peut entrer en conflit avec les événements ou les mots clés intégrés du navigateur. L'article fournit des solutions détaillées, y compris les emplacements de référence de script de peaufinage et les spécifications de dénomination des bonnes fonctions pour s'assurer que le code JavaScript est correctement exécuté.

Comment ajouter une info-bulle sur Hover en HTML? Comment ajouter une info-bulle sur Hover en HTML? Sep 18, 2025 am 01:16 AM

Usethetitleattributeforsimpletooltipsorcssforcustom-styledones.1.addtitle = "text" toanyelementfordtooltips.2.ForStyledToolTips, wraptheelementInacontainer, use.tooltipand.tooltiptextclasseswithcspositioning, pseudo-elelights, et vissibilitycccc

Comment faire du texte enroulé autour d'une image en HTML? Comment faire du texte enroulé autour d'une image en HTML? Sep 21, 2025 am 04:02 AM

USECSSFLOATPROPERTYTOWRAPTextArnanImage: FloatleftFortExtontheRight, FloatRightFortExtontheLeft, AddmarginForspacing, etClearFloatStopReventLayEtLaySues.

Comment définir l'attribut Lang dans HTML Comment définir l'attribut Lang dans HTML Sep 21, 2025 am 02:34 AM

SetThelangAttributeInthehtmltagtospecifypagelanguage, par exemple, français; 2. usocodes comme "ES" ForSpanishor "FR" Forfrench;.

Implémentation de l'empilement vertical des éléments dans la disposition du flexion bootstrap: du côté à la couche Implémentation de l'empilement vertical des éléments dans la disposition du flexion bootstrap: du côté à la couche Sep 21, 2025 pm 10:42 PM

Lorsque vous utilisez Bootstrap pour la mise en page de la page Web, les développeurs rencontrent souvent le problème des éléments affichés côte à côte plutôt que d'empiler verticalement par défaut, en particulier lorsque le conteneur parent applique la disposition Flexbox. Cet article explorera ce défi de mise en page commun en profondeur et fournira une solution: en ajustant l'attribut de direction flexible du conteneur Flex à la colonne, en utilisant la classe d'outils Flex-Colonne de Bootstrap pour obtenir la disposition verticale correcte des balises H1 et des blocs de contenu tels que les formulaires, garantissant que la structure de page répond aux attentes.

See all articles