Autor | Zpráva | ||
---|---|---|---|
petr Profil * |
#1 · Zasláno: 19. 3. 2016, 12:26:51
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 |
#2 · Zasláno: 19. 3. 2016, 12:44:35
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--) while (anchors.length > 0) { context.removeChild(anchors[0]); } |
||
juriad Profil |
#3 · Zasláno: 19. 3. 2016, 12:45:57
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 * |
#4 · Zasláno: 19. 3. 2016, 12:51:13
Děkuji, to mi nedošlo.
|
||
Časová prodleva: 9 let
|
0