Désolé si le titre ne décrit pas exactement ce que j'essaie de faire. Je suis un novice à tout cela pour dire le moins! Pour vous aider à comprendre ce que j'essaie d'accomplir, veuillez lire l'exemple ci-dessous.Comment afficher/trier des divs spécifiques en fonction du choix de l'utilisateur
J'ai une liste de divs, dont chacun peut avoir une série de "tags" comme je les appelle. Pour cet exemple, j'utiliserai le rouge, le bleu et le vert comme balises possibles. Chaque tag est également associé à un bouton, sur lequel l'utilisateur peut cliquer pour filtrer les divs affichés. Lorsque le bouton est sur "on" il affichera les divs avec cette balise spécifique, mais quand il est "off" il cachera le contenu avec ce tag. C'est à moins que le contenu n'ait un autre tag actuellement activé.
Rouge: ON
Bleu: OFF
Vert: ON
DIV 1: Red
DIV 2: Bleu
DIV 3: vert
DIV 4: Rouge, Bleu
DIV 5: Bleu, Vert
DIV 6: Vert, Rouge
Parce que l'étiquette bleue est désactivée chaque DIV sera affiché sauf DIV 2. La raison pour laquelle affiche toujours DIV 4 et DIV 5 parce que les étiquettes Rouge et Vert sont toujours activées. Si vous deviez éteindre l'étiquette rouge, seules les DIVs 3, 5 et 6 s'afficheront, puisque seul le vert est activé.
Je suis sûr qu'il y a une façon beaucoup plus élégante d'expliquer ce qui précède, mais j'espère que cela a été compris. J'ai cherché une solution qui permettrait d'atteindre cet objectif, mais je ne l'ai pas encore trouvé. Il y a beaucoup de filtres de liste qui utilisent des boîtes de recherche mais cela ne fonctionnerait pas pour mes besoins.
Si quelqu'un pouvait me diriger dans la bonne direction quant à ce que je pourrais utiliser pour accomplir cela, je l'apprécierais!
Utiliser les classes est ce que j'ai essayé au début, même si je me suis contenté d'utiliser CSS sans JavaScript (cela a été fait comme une sorte de Proof of Concept). Le problème que j'ai rencontré est que si Blue était éteint et que Green était allumé, "Blue Green" était éteint. Si nous utilisons l'exemple ci-dessus, seuls les DIVs 1, 3 et 6 s'afficheront car ils n'ont pas de Blue comme balise. Je suppose que c'est comme ça que CSS le gère. J'ai regardé dans getElementsByClassName et il est sur le point de me rendre fou :) document.getElementById() fonctionne, mais document.getElementsByClassName() ne fonctionne pas. CONT ... –
... J'utilise le code pour .getElementsByClassName fourni ici: http://robertnyman.com/2008/05/27/the-ultimate-getelementsbyclassname-anno-2008/ Si j'utilise document.getElementsByClassName ("Rouge"). Style.display = "none"; avec le code ci-dessus en tirant le ClassName pour moi ne devrait-il pas fonctionner? C'est juste un morceau d'un puzzle de mille pièces pour moi. –
@Edvard D: Je ne suis pas vraiment un expert javascript, mais je pense que vous devez parcourir le retour de getElementsByClassName plutôt que d'essayer simplement .style.display le tableau retourné. (Corrigez-moi si j'ai tort, s'il-vous plait). –