⊗jsPmPrMEWShB 483 of 505 menu

Flere elementer med vis/skjul knapper i JavaScript

Lad os nu antage, at vi har mange afsnit, og hver af dem har sin egen knap til at skjule:

<p>1</p><button>toggle</button> <p>2</p><button>toggle</button> <p>3</p><button>toggle</button>

Lad os gøre sådan, at når der klikkes på en knap, skjules eller vises det tilsvarende afsnit.

For at gøre dette skal vi på en eller anden måde forbinde knapperne med vores afsnit. Der er flere måder at gøre dette på.

Første metode

Lad os forbinde knapper og afsnit på følgende måde:

<p id="elem1">1</p><button data-elem="elem1">toggle</button> <p id="elem2">2</p><button data-elem="elem2">toggle</button> <p id="elem3">3</p><button data-elem="elem3">toggle</button>

Nu vil vi, ved at klikke på en hvilken som helst knap, læse indholdet af dens data-elem attribut og lede efter et afsnit med det id. Det er den, vi vil toggle. Lad os implementere det beskrevne:

let buttons = document.querySelectorAll('button'); for (let button of buttons) { button.addEventListener('click', function() { let elem = document.querySelector('#' + this.dataset.elem); elem.classList.toggle('hidden'); }); }

Studer min løsning, og løs derefter selvstændigt, uden at kigge på min kode, denne opgave.

Anden metode

Det er ikke særlig praktisk at sætte id'er og data-attributter. Lad os gøre sådan, at forbindelsen er baseret på rækkefølgen: lad den første knap skjule det første afsnit, den anden knap - det andet og så videre.

Lad os implementere det beskrevne:

let buttons = document.querySelectorAll('button'); let elems = document.querySelectorAll('p'); for (let i = 0; i < buttons.length; i++) { buttons[i].addEventListener('click', function() { elems[i].classList.toggle('hidden'); }); }

Studer min løsning, og løs derefter selvstændigt, uden at kigge på min kode, denne opgave.

Tredje metode

Som det kan ses, er afsnittet forbundet med knappen dens venstre nabo. Dette kan bruges til at etablere forbindelsen:

let buttons = document.querySelectorAll('button'); for (let button of buttons) { button.addEventListener('click', function() { this.previousElementSibling.classList.toggle('hidden'); }); }

Studer min løsning, og løs derefter selvstændigt, uden at kigge på min kode, denne opgave.

itdauzlbnkk