


Tutoriel sur la mise en œuvre efficace de la commutation dynamique du contenu des menus déroulants à l'aide de JavaScript
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 :
- 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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

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

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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

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.

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é.

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

USECSSFLOATPROPERTYTOWRAPTextArnanImage: FloatleftFortExtontheRight, FloatRightFortExtontheLeft, AddmarginForspacing, etClearFloatStopReventLayEtLaySues.

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

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.
