Procházení značek v JavaScriptu
Jak cyklem procházet značky v JavaScriptu. Popis různých možností.
Elementy se společnými znaky (stejný název tagu, stejný název třídy) lze získat buď metodami getElement*
, nebo od IE 8 metodou querySelectorAll
. Oba postupy vrátí kolekci elementů.
Chceme-li se získanými značkami něco dělat (změnit jim třídu, přidat nějakou funkci do onclick
u apod.), je potřeba je projít cyklem.
Cyklus for
Časté řešení je běžný cyklus for
, kde se prochází jednotlivé elementy do té doby, než se dosáhne počtu všech vybraných značek (znacky.length
). (Pozor na překlep, lenght
je špatně.)
Indexy značek se číslují od nuly, proto var i = 0
.
var znacky = document.getElementsByTagName("div");
for (var i = 0; i < znacky.length; i++) {
// znacky[i]
}
V případě, že chceme položky procházet odzadu, bude for
vypadat následovně (ukázka):
for (var i = znacky.length - 1; i >= 0; i--) {
// znacky[i]
}
Tento postup zezadu by měl být rychlejší (nemusí se neustále procházet všechny značky a zjišťovat jejich počet — znacky.length
).
Zrychlit první způsob cyklu for
by šlo uložením délky do pomocné proměnné (ukázka).
for (var i = 0, delka = znacky.length; i < delka; i++) {
// znacky[i]
}
Cyklus for … in
Při použití for
/in
cyklu by projití všech elementů mohlo vypadat následovně (ukázka):
for (var i in znacky) {
// znacky[i]
}
Nebezpečí hrozí při používání for … in
pro procházení polí. Druhá nevýhoda je, že směr procházení elementů nemusí být shodný napříč prohlížeči.
Cyklus while
Po for … in
má asi nejstručnější zápis. Někdy může být nevýhoda, že prochází značky od konce a srozumitelnost zápisu nemusí být pro každého (ukázka).
var i = znacky.length;
while (i--) {
// znacky[i]
}
Komentáře