Table des matières
Tirer parti de JavaScript
Structure HTML de base
Section FAQ
Qui sommes-nous
Ce que nous faisons
Pourquoi travailler ici
Apprendre encore plus
Fonctionnalité de base JavaScript
Expansion des capacités de recherche: correspondance floue
Note importante
Conclusion
Maison interface Web tutoriel CSS Recherche filtrée en page avec Javascript Vanilla

Recherche filtrée en page avec Javascript Vanilla

Mar 18, 2025 pm 12:00 PM

Recherche filtrée en page avec Javascript Vanilla

Améliorez l'expérience utilisateur sur les pages riches en informations avec une fonction de recherche simple en page. Oubliez les requêtes de base de données ou l'analyse JSON - cette méthode recherche directement le contenu texte rendu d'une page Web. Bien qu'il existe une recherche intégrée de navigateur, cette approche offre une expérience de filtrage raffinée, mettant en évidence les résultats pertinents pour une navigation plus facile.

Voici une démo en direct présentant la fonctionnalité: [lien vers la démo]

J'utilise cette technique dans un projet du monde réel: https://www.php.cn/link/2a60eed05079970d61abad679da7ae8f .

Tirer parti de JavaScript

Ce tutoriel utilise JavaScript pour gérer tous les éléments interactifs. Plus précisément, ce sera:

  1. Identifier le contenu consultable.
  2. Survenez l'entrée de l'utilisateur dans le champ de recherche.
  3. Filtrez le innerText des éléments consultables.
  4. Vérifiez si le texte inclut le terme de recherche ( .includes() est essentiel ici).
  5. Basculer la visibilité de l'élément basé sur les correspondances de termes de recherche.

Structure HTML de base

Supposons une page FAQ où chaque question est présentée comme une "carte" avec un titre et un contenu:

<h1 id="Section-FAQ"> Section FAQ</h1>

<div>
  <h3 id="Qui-sommes-nous">Qui sommes-nous</h3>
  <p>Il a survécu non seulement à cinq siècles, mais aussi au saut dans la composition électronique, restant essentiellement inchangé. Il a été popularisé</p>
</div>

<div>
  <h3 id="Ce-que-nous-faisons">Ce que nous faisons</h3>
  <p>Il a survécu non seulement à cinq siècles, mais aussi au saut dans la composition électronique, restant essentiellement inchangé. Il a été popularisé</p>
</div>

<div>
  <h3 id="Pourquoi-travailler-ici">Pourquoi travailler ici</h3>
  <p>Il a survécu non seulement à cinq siècles, mais aussi au saut dans la composition électronique, restant essentiellement inchangé. Il a été popularisé</p>
</div>

<div>
  <h3 id="Apprendre-encore-plus">Apprendre encore plus</h3>
  <p>Vous voulez en savoir plus sur nous?</p>
</div>
Copier après la connexion

Pour une page avec de nombreuses questions, cette structure évolue efficacement.

Pour permettre l'interactivité, nous utiliserons une seule règle CSS:

 .is-hidden {affichage: aucun; }
Copier après la connexion

Cette classe sera ajoutée ou supprimée dynamiquement pour contrôler la visibilité des éléments. Nous ajouterons également une entrée de recherche:

 <label for="searchbox">Recherche:</label>
<input type="text" id="searchbox">
Copier après la connexion

Fonctionnalité de base JavaScript

Le code JavaScript suivant gère la fonctionnalité de recherche:

 fonction lifesearch () {
  Laissez les cartes = document.QuerySelectorAll ('. Cards'); // sélectionner les éléments de la carte
  Laissez SearchQuery = document.getElementById ("SearchBox"). Valeur; // Obtenez le terme de recherche

  cartes.ForEach (card => {
    Soit textContent = card.innerText.tolowerCase (); // normaliser en minuscules
    Laissez SearchTermLower = SearchQuery.tolowerCase (); // normaliser en minuscules

    if (textContent. y compris (SearchterLlower)) {
      card.classlist.remove ('is-hidden'); // Afficher les cartes de correspondance
    } autre {
      card.classList.add ('is-hidden'); // masquer les cartes non correspondantes
    }
  });
}

// ajoute un petit retard pour éviter les appels de fonction excessifs
Laissez Typingtimer;
Soit typeInterval = 500; // une demi-seconde
Laissez SearchInput = document.getElementById ('SearchBox');

searchInput.adDeventListener ('keyup', () => {
  ClearTimeout (typingtimer);
  TypingTimer = setTimeout (lifesearch, typeInterval);
});
Copier après la connexion

Le code itère via les cartes, vérifie l'inclusion des termes de recherche (insensible au cas) et met à jour la visibilité en conséquence. Un retard empêche les problèmes de performance des frappes rapides.

Expansion des capacités de recherche: correspondance floue

Pour intégrer la correspondance floue (recherche de mots clés connexes, même s'il n'est pas affiché explicitement), envisagez d'utiliser des éléments ou des attributs cachés:

Méthode 1: Éléments cachés

Ajouter des éléments cachés contenant des mots clés:

<div>
  <h3 id="Qui-sommes-nous">Qui sommes-nous</h3>
  <p>...</p>
  <span class="hidden-keywords">secret, compagnie, histoire</span>
</div>
Copier après la connexion

Modifiez liveSearch pour inclure textContent au lieu de innerText pour accéder aux mots clés cachés.

Méthode 2: Attributs

Utilisez des attributs comme alt pour les images:

<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174227042512545.jpg" class="lazy" alt="Recherche filtrée en page avec Javascript Vanilla">
Copier après la connexion

Ajustez liveSearch pour utiliser getAttribute('alt') pour rechercher des valeurs d'attribut.

Note importante

Cette méthode de recherche est limitée au contenu déjà rendu dans le DOM. Il ne convient pas à la recherche de bases de données externes ou de grands ensembles de données.

Conclusion

Cette solution de recherche en page simple mais efficace, implémentée avec Vanilla JavaScript, peut considérablement améliorer la convivialité des pages Web avec un contenu étendu. Adapter et développer cette technique en fonction de diverses applications, des pages FAQ aux galeries d'images.

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

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.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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

Tutoriel Java
1653
14
Tutoriel PHP
1251
29
Tutoriel C#
1224
24
Cartes empilées avec un positionnement collant et une pincée de sass Cartes empilées avec un positionnement collant et une pincée de sass Apr 03, 2025 am 10:30 AM

L'autre jour, j'ai repéré ce morceau particulièrement charmant sur le site Web de Corey Ginnivan où une collection de cartes se cassent les uns sur les autres pendant que vous faites défiler.

Fontes variables de polices Google Fontes variables de polices Google Apr 09, 2025 am 10:42 AM

Je vois que Google Fonts a déployé un nouveau design (tweet). Comparé à la dernière grande refonte, cela semble beaucoup plus itératif. Je peux à peine faire la différence

Comment créer un compte à rebours animé avec HTML, CSS et JavaScript Comment créer un compte à rebours animé avec HTML, CSS et JavaScript Apr 11, 2025 am 11:29 AM

Avez-vous déjà eu besoin d'un compte à rebours sur un projet? Pour quelque chose comme ça, il pourrait être naturel d'atteindre un plugin, mais c'est en fait beaucoup plus

Guide des attributs de données HTML Guide des attributs de données HTML Apr 11, 2025 am 11:50 AM

Tout ce que vous avez toujours voulu savoir sur les attributs de données dans HTML, CSS et JavaScript.

Comment sélectionner un élément enfant avec l'élément de nom de première classe via CSS? Comment sélectionner un élément enfant avec l'élément de nom de première classe via CSS? Apr 05, 2025 pm 11:24 PM

Lorsque le nombre d'éléments n'est pas fixé, comment sélectionner le premier élément enfant du nom de classe spécifié via CSS. Lors du traitement de la structure HTML, vous rencontrez souvent différents éléments ...

Pourquoi les zones réduites pourpre dans la disposition Flex sont-elles considérées à tort «espace de débordement»? Pourquoi les zones réduites pourpre dans la disposition Flex sont-elles considérées à tort «espace de débordement»? Apr 05, 2025 pm 05:51 PM

Questions sur les zones de slash violet dans les dispositions flexibles Lorsque vous utilisez des dispositions flexibles, vous pouvez rencontrer des phénomènes déroutants, comme dans les outils du développeur (D ...

Une preuve de concept pour rendre Sass plus rapidement Une preuve de concept pour rendre Sass plus rapidement Apr 16, 2025 am 10:38 AM

Au début d'un nouveau projet, la compilation SASS se produit en un clin d'œil. Cela se sent bien, surtout quand il est associé à BrowSersync, qui recharge

See all articles