| 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: 10 let
|
|||
0