⊗jsPmPrSEE 477 of 505 menu

Edycja pojedynczego elementu w JavaScript

Teraz nauczymy się edytować teksty elementów za pomocą pól wprowadzania. Zacznijmy od prostych rzeczy i stopniowo zwiększajmy złożoność.

A więc, załóżmy, że mamy dany akapit i pole input, umieszczone w tym samym rodzicu:

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

Zróbmy tak, aby po utracie fokusu w polu input jego tekst pojawiał się w akapicie:

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

Zróbmy teraz tak, aby po wejściu na stronę w polu input już był tekst akapitu. W ten sposób za pomocą pola input będziemy mogli edytować tekst znajdujący się w akapicie.

Zaimplementujmy:

let elem = document.querySelector('#elem'); let input = document.querySelector('#input'); input.value = elem.textContent; // zapisujemy w polu input tekst akapitu input.addEventListener('blur', function() { elem.textContent = this.value; });

Zmodyfikuj powyższy kod tak, aby tekst akapitu zmieniał się nie po utracie fokusu, lecz w miarę wprowadzania tekstu w polu input.

Pojawienie się pola input

Zróbmy teraz tak, aby pola input początkowo nie było na stronie, a pojawiało się po kliknięciu w akapit. Czyli nasz początkowy HTML będzie wyglądał tak:

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

Na początek po prostu zaimplementujmy pojawienie się pola input, bez edycji:

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

A teraz zróbmy tak, aby po utracie fokusu w polu input zmieniał się tekst akapitu:

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

Nasz kod jednak jest niedoskonały, ponieważ każde kliknięcie w akapit będzie prowadzić do pojawienia się nowego pola input.

Aby rozwiązać problem, po prostu po utracie fokusu usuwajmy bieżące pole input:

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(); // usuwamy pole input }); elem.parentElement.appendChild(input); });

Samodzielnie, nie podglądając w mój kod, rozwiąż opisane zadanie.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć