Autor Zpráva
petr
Profil *
Ahoj, nemůžu nějak příjít na kloub tomu, že když chci smazat ze nějakého obalu např. všechny odkazy, smaže se mi vždy jen půlka z nich.
Živá ukázka
Děje se to v IE, Mozille, Chromu, Opeře a Safari.
Alphard
Profil
Problém je v tom for cyklu při mazání, vy inkrementuejte i, ale zároveň se snižujícím se počtem položek se snižuje i horní hranice, důsledkem je smazání jen poloviny položek. Ty vyšší indexy nakonec ani neexistují.

Řešením je jít z druhé strany
for(var i = anchors.length-1; i >= 0; i--)
což píši spíše pro detailní pochopení. Přímočaré řešení je pomocí cyklu while:

while (anchors.length > 0) {
    context.removeChild(anchors[0]);
}
juriad
Profil
Protože po odstranění 0. se pokoušíš odstranit 1. (což byl vlastně původně 2.)
1. možné řešení (mazání vzdy prvního, počet-synů-krát):
    for(var i = 0, l = anchors.length; i < l; i++) {
        context.removeChild(anchors[0]);
    }

2. možné řešení (mazání vždy prvního, dokud tam nějaký je):
    while (anchors.length > 0) {
        context.removeChild(anchors[0]);
    }

3. možné řešení (mazání odzadu):
    for (var i = anchors.length - 1; i >= 0; i--) {
        context.removeChild(anchors[i]);
    }
petr
Profil *
Děkuji, to mi nedošlo.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0