⊗jsPmPrSEE 477 of 505 menu

Bewerken van een afzonderlijk element in JavaScript

Nu leren we hoe we teksten van elementen kunnen bewerken met behulp van invoervelden. We beginnen met eenvoudige dingen en gaan geleidelijk complexer worden.

Laten we aannemen dat we een alinea en een invoerveld hebben, geplaatst in dezelfde ouder:

<div id="parent"> <p id="elem">text</p> <input id="input"> </div>

Laten we ervoor zorgen dat wanneer het invoerveld zijn focus verliest, de tekst ervan in de alinea verschijnt:

let elem = document.querySelector('#elem'); let input = document.querySelector('#input'); input.addEventListener('blur', function() { elem.textContent = this.value; });

Laten we nu ervoor zorgen dat wanneer de pagina wordt geladen, de tekst van de alinea al in het invoerveld staat. Op deze manier kunnen we met behulp van het invoerveld de tekst in de alinea bewerken.

Laten we dit implementeren:

let elem = document.querySelector('#elem'); let input = document.querySelector('#input'); input.value = elem.textContent; // schrijf de alineatekst naar het invoerveld input.addEventListener('blur', function() { elem.textContent = this.value; });

Pas de bovenstaande code aan zodat de tekst van de alinea niet verandert bij focusverlies, maar tijdens het invoeren van tekst in het invoerveld.

Verschijnen van invoerveld

Laten we nu ervoor zorgen dat het invoerveld initieel niet op de pagina staat, maar verschijnt bij een klik op de alinea. Dat betekent dat onze initiële HTML er als volgt uitziet:

<div id="parent"> <p id="elem">text</p> </div>

Laten we eerst simpelweg het verschijnen van het invoerveld implementeren, zonder bewerkingsfunctionaliteit:

let elem = document.querySelector('#elem'); elem.addEventListener('click', function() { let input = document.createElement('input'); input.value = elem.textContent; elem.parentElement.appendChild(input); });

Laten we nu ervoor zorgen dat wanneer het invoerveld zijn focus verliest, de tekst van de alinea verandert:

let elem = document.querySelector('#elem'); elem.addEventListener('click', function() { let input = document.createElement('input'); input.value = elem.textContent; input.addEventListener('blur', function() { elem.textContent = this.value; }); elem.parentElement.appendChild(input); });

Onze code is echter niet perfect, omdat elke klik op de alinea zal leiden tot het verschijnen van een nieuw invoerveld.

Om het probleem op te lossen, zullen we simpelweg het huidige invoerveld verwijderen bij focusverlies:

let elem = document.querySelector('#elem'); elem.addEventListener('click', function() { let input = document.createElement('input'); input.value = elem.textContent; input.addEventListener('blur', function() { elem.textContent = this.value; this.remove(); // verwijder het invoerveld }); elem.parentElement.appendChild(input); });

Los de beschreven taak zelfstandig op, zonder in mijn code te spieken.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren