⊗jsSpOtDm 277 of 294 menu

Optimalizace práce s DOM v JavaScriptu

Práce s DOM je pomalá operace. Proto je třeba minimalizovat získávání elementů, čtení a zápis dat, zejména v cyklu.

Podívejme se na příklad. Předpokládejme, že máme vstupní pole, do kterého se zadává číslo:

<input>

Při ztrátě fokusu zkontrolujme, zda zadané číslo je v zadaném rozsahu:

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

Problém je v tom, že jsme dvakrát přečetli text ze vstupního pole, ačkoli číslo v něm se nemění. To samozřejmě není optimální. Optimalizujme:

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

Následující kód kontroluje zadanou hodnotu. Proveďte optimalizaci:

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

Následující kód hledá součet celých čísel od jedničky do čísla zadaného ve vstupním poli. Proveďte optimalizaci:

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

Následující kód hledá součet dělitelů čísla zadaného ve vstupním poli. Proveďte optimalizaci:

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

Následující kód umocňuje čísla z odstavců na druhou. Proveďte optimalizaci:

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

Následující kód kontroluje, zda bylo do vstupního pole zadáno řetězec délky v zadaném rozsahu. Proveďte optimalizaci:

<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('---'); } });
Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout