Ich habe ein Skript, das eine Klasse zu einem Paar divs hinzufügt und entfernt, wenn auf einen Link geklickt wird. Jedes div hat eine set-Klasse, die nicht entfernt werden muss. Diese Klasse wird jedoch entfernt. Wie verhindere ich das?Warum setzt meine JavaScript-Datei das Attribut eines divs nicht zurück?
HTML
<div id="home" class="page pageShowing"></div>
<div id="portfolio" class="page"></div>
JS
let holder = document.getElementById("main");
let pageShowingClass = holder.getElementsByClassName("pageShowing");
let pages = holder.getElementsByClassName("page");
Navigation.Links.forEach(function(value){
let createNavLink = document.createElement("li");
let createNavText = document.createTextNode(value.title);
createNavLink.appendChild(createNavText);
createNavList.appendChild(createNavLink);
createNavLink.addEventListener("click", function(){
let link = createNavLink.innerHTML;
link = link.toLowerCase().replace(" ", "_");
let page = document.getElementById(link);
page.setAttribute("class", "page");
for(let i = 0; i < pageShowingClass.length; i++){
Hier sollte der Click-Handler nur die pageShowing Klasse werden entfernt wenn es vorhanden ist, sondern auch ist das Entfernen der Seitenklasse
if(pageShowingClass[i].getAttribute("class") == "pageShowing"){
pageShowingClass[i].removeAttribute("class");
}
}
Hier sollte der Click-Handler readding Seite Klasse, wenn der Link angeklickt wird.
page.setAttribute("class", "page");
page.setAttribute("class", "pageShowing");
page.style.display = "block";
});
});
Ich weiß, dass es einfacher ist, dies in jQuery zu tun, aber ich will nicht, es in jQuery sein. Ich habe es auch schon, wo es die pageShowing
Klasse dynamisch hinzufügen und entfernen wird, also ist das kein Problem.
Du suchst nach ['classList'] (https: // developer.mozilla.org/en-US/docs/Web/API/Element/classList). 'getAttribute' und' setAttribute' modifizieren, nun, das gesamte Attribut. – Siguza