⊗jsPmPrSEE 477 of 505 menu

Редактиране на отделен елемент в JavaScript

Сега ще се научим да редактираме текстове на елементи с помощта на входни полета. Ще започнем с прости неща и постепенно ще усложняваме.

И така, нека имаме даден параграф и вход, разположени в един родител:

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

Нека направим така, че при загуба на фокус във входа, неговият текст да се появи в параграфа:

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

Сега нека направим така, че при влизане в страницата, във входа вече да има текст от параграфа. По този начин ще можем чрез входа да редактираме текста, намиращ се в параграфа.

Нека го реализираме:

let elem = document.querySelector('#elem'); let input = document.querySelector('#input'); input.value = elem.textContent; // записваме във входа текста на параграфа input.addEventListener('blur', function() { elem.textContent = this.value; });

Модифицирайте горния код така, че текстът на параграфа да се променя не при загуба на фокус, а при въвеждане на текст във входа.

Появяване на вход

Сега нека направим така, че първоначално да няма вход на страницата, а той да се появи при кликване върху параграфа. Тоест нашият начален HTML ще изглежда така:

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

Първо, нека просто реализираме появата на вход, без редактиране:

let elem = document.querySelector('#elem'); elem.addEventListener('click', function() { let input = document.createElement('input'); input.value = elem.textContent; elem.parentElement.appendChild(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; }); elem.parentElement.appendChild(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(); // премахваме входа }); elem.parentElement.appendChild(input); });

Самостоятелно, без да надничате в моя код, решете описаната задача.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне