Comment puis-je ajouter et supprimer une classe active à un élément en JavaScript
Je suis en train de faire un menu de navigation j'ai fait tous les HTML et CSS quand venir à javascript je suis frappé dans le milieu, je suis en mesure d'ajouter une classe à l'élément, mais je ne suis pas en mesure de supprimer la classe des éléments restants. Merci de m'aider avec cela.
voici mon code
<!DOCTYPE html>
<html>
<head>
<title>Navigation class Toggling</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
header {
width: 100%;
height: auto;
max-width: 600px;
margin: 0 auto;
}
nav {
width: 100%;
height: 40px;
background-color: cornflowerblue;
}
ul {
list-style-type: none;
}
li {
display: inline-block;
}
a {
text-decoration: none;
padding: 8px 15px;
display: block;
text-transform: capitalize;
background-color: darkgray;
color: #fff;
}
a.active {
background-color: cornflowerblue;
}
</style>
</head>
<body>
<header>
<nav>
<ul onclick="myFunction(event)">
<li><a href="#">home</a></li>
<li><a href="#">about</a></li>
<li><a href="#">service</a></li>
<li><a href="#">profile</a></li>
<li><a href="#">portfolio</a></li>
<li><a href="#">contact</a></li>
</ul>
</nav>
</header>
<script type="text/javascript">
function myFunction(e) {
e.target.className = "active";
}
</script>
</body>
</html>
et voici mon Codepen
- où est votre codepen ?
- Avez-vous vérifier les réponses à cette question? stackoverflow.com/q/6787383
- Double Possible de Comment puis-je basculer d'un élément de la classe en JavaScript?
Vous devez vous connecter pour publier un commentaire.
Utilisation
document.querySelectorAll
de trouver l'élément qui ont actuellement leactive
classe, alors vous pouvez supprimer cette classe.JSFIDDLE
Au lieu de
document.querySelectorAll
vous pouvez également utiliserdocument.querySelector
JSFIDDLE 2
Modifier
Au lieu d'itérer sur l'ensemble de la collection, vous pouvez sélectionner l'élément qui ont une classe
active
à l'aide de document.queryselector. Également fournir uneid
à l'ul de sorte que vous pouvez cibler l'élément spécifiqueJS:
CSS:
HTML:
Vous pouvez utiliser
classList
méthodes pouradd
,remove
, outoggle
.D'abord supprimer le nom de classe de la précédente:
Puis ajouter le nouvel élément:
Vous pouvez utiliser "pure" JavaScript
Element.classList
ajouter et supprimer une classe à partir de votre élément du DOM.add
: Ajouter spécifié de valeurs de classe. Si ces classes existent déjà dans l'attribut de l'élément, puis ils sont ignorés.remove
: Supprimer spécifié de valeurs de classe.Utilisation
Document.querySelectorAll()
à returnsa éléments dans le document qui correspondent le groupe spécifié de sélecteurs CSS.Plus d'infos sur:
https://developer.mozilla.org/en/docs/Web/API/Element/classList
https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll
Au sujet de votre code, vous pouvez le marquer comme active votre élément lorsque l'Utilisateur de cliquer dessus avec le code suivant:
JS:
CSS:
HTML:
HTML
CSS
JS
BTW: UNE excellente solution est ici: https://gomakethings.com/getting-all-sibling-elements-when-a-link-or-button-is-clicked-with-vanilla-js/
vous pouvez le faire comme ceci en pure javascript
JS:
HTML:
.className = "";
est qu'il va supprimer toutes les cssclass
appliquée à l'élément DOM, quand au lieu d'utiliserclassList.remove
nous pouvons supprimer de manière sélective uniquement une classe CSS spécifique.Je serais personnellement coller avec le
document.querySelector
méthode.querySelector accepte un CSS comme requête, que nous allons utiliser pour trouver une classe active sur la page. Si elle existe (la
if
déclaration), de supprimer et d'appliquer la nouvelle classe sur la cible.S'il vous plaît être conscient que l'utilisation de
className = ""
entraînera dans toutes les classes en cours de suppression. Il serait plus intéressant de les utiliserclassList
pour tout.JS:
JS
Pour une meilleure prise en charge du navigateur:
JS:
CSS:
HTML:
Ci-dessous devraient vous aider.