0
votes

Utilisation de JS pour basculer entre deux éléments HTML

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>


4 commentaires

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.


5 Réponses :


0
votes

hi s'il vous plaît vérifier la logique ci-dessous pour masquer / afficher la H forte> et p forte> étiquette d'avant en arrière. Aussi pour basculer sur l'événement de clic dans P STRAND> TAG

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>


0 commentaires

0
votes

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 .hide à tous les éléments de HTML, à l'exception du premier élément (par défaut affiché). J'ai testé ci-dessous: xxx

ajoutez des classes comme ci-dessous: xxx


0 commentaires

0
votes

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> xxx pré>

CSS: p> xxx pré>

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');
    })
}


2 commentaires

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?



1
votes

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.


0 commentaires

0
votes

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>


0 commentaires