⊗jsPmPrSEE 477 of 505 menu

Edição de um elemento individual em JavaScript

Agora vamos aprender a editar textos de elementos usando campos de entrada. Vamos começar com coisas simples e gradualmente aumentar a complexidade.

Então, suponha que temos um parágrafo e um input, dispostos no mesmo elemento pai:

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

Vamos fazer com que, ao perder o foco, o texto do input apareça no parágrafo:

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

Agora vamos fazer com que, ao carregar a página, o texto do parágrafo já esteja no input. Dessa forma, poderemos usar o input para editar o texto localizado no parágrafo.

Vamos implementar:

let elem = document.querySelector('#elem'); let input = document.querySelector('#input'); input.value = elem.textContent; // escrevemos no input o texto do parágrafo input.addEventListener('blur', function() { elem.textContent = this.value; });

Modifique o código acima para que o texto do parágrafo mude não na perda de foco, mas à medida que o texto é digitado no input.

Aparição do input

Agora vamos fazer com que o input inicialmente não esteja na página, mas apareça ao clicar no parágrafo. Ou seja, nosso HTML inicial ficará assim:

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

Para começar, vamos simplesmente implementar o aparecimento do input, sem a funcionalidade de edição:

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

E agora vamos fazer com que, ao perder o foco no input, o texto do parágrafo mude:

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

No entanto, nosso código é imperfeito, pois cada clique no parágrafo resultará no aparecimento de um novo input.

Para resolver o problema, simplesmente removeremos o input atual quando ele perder o foco:

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

Resolva independentemente a tarefa descrita, sem consultar o meu código.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar