⊗jsPmPrSEE 477 of 505 menu

자바스크립트로 개별 요소 편집하기

이제 입력 필드를 사용하여 요소의 텍스트를 편집하는 방법을 배워보겠습니다. 간단한 것부터 시작하여 점점 더 복잡해지도록 하겠습니다.

그럼, 동일한 부모 안에 단락과 입력 필드가 주어졌다고 가정해 보겠습니다:

<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
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부