cherche à faire une page d'atterrissage interactive, et j'aimerais que les visiteurs cliquent sur un élément HTML, qui disparaît puis disparaissent par un autre.
J'ai inclus le code ci-dessous pour votre commentaire et le lien CodePen: https: / /CODEPEN.IO/RIZA-KHAN/PEN/PMRWKW P>
Le problème est que la bascule ne fonctionne pas et après plusieurs clics, les balises H4 et P ont complètement disparu. J'ai essayé de passer à l'endroit où la classe de .hide dans la CSS (qui, pour une raison quelconque, fait une différence, et je ne comprends pas pourquoi). p>
p>
<div class="main"> <div class="three-points"> <i class="fab fa-google fa-5x"></i><h4 class="switch">SEO Optomized</h4><p class="switch hide">Utilizing best practices to ensure page is ranked appopriately</p> <i class="fa fa-mobile fa-5x"></i><h4 class="switch">Responsive Design</h4><p class="switch hide">Lorem ipsum dolor sit amet consectetur, adipisicing elit. At autem culpa possimus facere. Recusandae.</p> <i class="fa fa-window-maximize fa-5x"></i><h4 class="switch">Elegant Themes</h4><p class="switch hide">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Sunt quis consequatur asperiores. Odit, voluptates nihil.</p> </div> </div>
5 Réponses :
hi s'il vous plaît vérifier la logique ci-dessous pour masquer / afficher la P> <div class="main">
<div class="three-points">
<i class="fab fa-google fa-5x"></i><h4 class="switch">SEO Optomized</h4><p class="switch hide">Utilizing best practices to ensure page is ranked appopriately</p>
<i class="fa fa-mobile fa-5x"></i><h4 class="switch">Responsive Design</h4><p class="switch hide">Lorem ipsum dolor sit amet consectetur, adipisicing elit. At autem culpa possimus facere. Recusandae.</p>
<i class="fa fa-window-maximize fa-5x"></i><h4 class="switch">Elegant Themes</h4><p class="switch hide">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Sunt quis consequatur asperiores. Odit, voluptates nihil.</p>
</div>
</div>
Je pense que la question est due au fait que vous ajoutez l'auditeur d'événement à tous les éléments immédiatement. Essayez plutôt d'ajouter et de supprimer l'auditeur d'événement dynamiquement selon les besoins. Vous devriez ajouter la classe ajoutez des classes comme ci-dessous: p> .hide code> à tous les éléments de HTML, à l'exception du premier élément (par défaut affiché). J'ai testé ci-dessous:
Modifier Démarrer:
Je ne sais pas si je veux démarrer une autre question pour cela, mais j'aimerais savoir pourquoi déplacer la classe CSS .hide casse le code ci-dessous: P>
Merci, P >
EDIT END: P>
compris. P>
a dû ajouter un autre événement qui a écouté un clic sur la balise p>
. Le code est ci-dessous: p>
html: p> CSS: p> JS: p > const switchElements = document.querySelectorAll('.switch');
for(const switchElement of switchElements) {
switchElement.addEventListener('click', (e) => {
e.target.classList.add('hide');
e.target.nextSibling.classList.remove('hide');
})
}
const backElements = document.querySelectorAll('.back');
for (const backs of backElements) {
backs.addEventListener('click', (e) => {
e.target.classList.add('hide');
e.target.previousSibling.classList.remove('hide');
})
}
Pourquoi vous devez lier tellement d'écouteurs d'événement quand il peut être fait à l'aide d'un événement d'auditeur unique
Je suis d'accord, je préférerais le faire en un. Cependant, j'ai dirigé votre code et cela n'a pas fonctionné comme souhaité. Pouvez-vous confirmer votre code fonctionne?
Le problème est dans votre CSS. Le plus gros problème est que les parenthèses sont déséquilibrées, de sorte que la définition de .hide est manquée. La question secondaire est que les définitions imbriquées ne sont pas des CSS. Ils ressemblent à moins ou en sass. P>
OK, je ne dirais pas que ceci est une réponse légitime, car je ne résout pas cette question avec JS.
Mais la réalité est, il y a toujours plusieurs façons de résoudre (ou vous pouvez appeler cela un piratage) problème. P>
C'est l'approche que j'utilise plusieurs fois sur la production et ne nécessite pas une seule ligne de javascript. P>
Je ne réutilise pas votre code, mais écrivez Le mien pour le garder aussi simple que c'est aussi simple que c'est, mais l'idée est assez facile d'appliquer sur votre cas. p>
Si vous souhaitez les garder ouverts, la radio peut être modifiée en cas de cocher. P>
p>
<label for="radio1"> <input type="radio" id="radio1" name="toggler"> toggle 1 <div> this is the first content </div> </label> <label for="radio2"> <input type="radio" id="radio2" name="toggler"> toggle 2 <div> this is the second content </div> </label> <label for="radio3"> <input type="radio" id="radio3" name="toggler"> toggle 3 <div> this is the third content </div> </label>
pouvez-vous s'il vous plaît expliquer le flux de travail liée à quel élément va se cacher
Les
et
vont de retour d'avant en arrière. En cliquant sur on le cachera et affichera l'autre
Pendant que vous essayez d'y parvenir avec JavaScript, j'ai en fait une proposition ... Utilisez un bouton radio avec CSS?
Bonjour Leo, si vous le construisez, ils viendront. Présentez-moi du code et je serai intéressé à l'examiner.