⊗jsSpOtDm 277 of 294 menu

JavaScript에서 DOM 작업 최적화

DOM 작업은 느린 연산입니다. 따라서 요소 획득, 데이터 읽기 및 쓰기를 최소화해야 합니다. 특히 반복문 안에서 더욱 그렇습니다.

예제를 살펴보겠습니다. 숫자를 입력하는 입력 필드가 있다고 가정합니다:

<input>

포커스를 잃었을 때 입력된 숫자가 지정된 범위 내에 있는지 확인해 봅시다:

let input = document.querySelector('input'); input.addEventListener('blur', function() { if (+input.value > 0 && +input.value <= 10) { console.log('+++'); } else { console.log('---'); } });

문제는 입력 필드의 텍스트를 두 번 읽는다는 것입니다. 입력된 숫자는 변경되지 않는데도 말이죠. 이는 당연히 최적화되지 않았습니다. 최적화해 봅시다:

let input = document.querySelector('input'); input.addEventListener('blur', function() { let num = +input.value; if (num > 0 && num <= 10) { console.log('+++'); } else { console.log('---'); } });

다음 코드는 입력된 값을 검증합니다. 최적화를 수행하세요:

<input> let input = document.querySelector('input'); input.addEventListener('blur', function() { if (input.value === '1' || input.value === '2') { console.log('+++'); } else { console.log('---'); } });

다음 코드는 입력 필드에 입력된 숫자까지의 정수의 합을 구합니다. 최적화를 수행하세요:

<input> let input = document.querySelector('input'); input.addEventListener('blur', function() { let sum = 0; for (let i = 1; i <= +input.value; i++) { sum += i; } console.log(sum); });

다음 코드는 입력 필드에 입력된 숫자의 약수의 합을 구합니다. 최적화를 수행하세요:

<input> <div></div> let input = document.querySelector('input'); input.addEventListener('blur', function() { let sum = 0; for (let i = 1; i <= +input.value; i++) { if (input.value % i === 0) { sum += i; let div = document.querySelector('div'); div.textContent = sum; } } });

다음 코드는 단락의 숫자를 제곱합니다. 최적화를 수행하세요:

<p>1</p> <p>2</p> <p>3</p> <p>4</p> let elems = document.querySelectorAll('p'); for (let elem of elems) { elem.textContent = elem.textContent * elem.textContent; }

다음 코드는 입력 필드에 입력된 문자열의 길이가 주어진 범위 내에 있는지 확인합니다. 최적화를 수행하세요:

<input data-min="5" data-max="10"> let inp = document.querySelector('input'); inp.addEventListener('blur', function() { if (inp.dataset.min > inp.value.length || inp.dataset.max < inp.value.length) { console.log('+++'); } else { console.log('---'); } });
한국어
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
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부