Newsgroup: it.comp.lang.javascript
Titolo: childNodes;

        remove = container.childNodes;
         for(i = 0; i < remove.length; i++){
             container.removeChild(remove[i]);
         }
questa porzione di codice, non dovrebbe togliere tutti i child in container?
come mai me ne lascia sempre uno in più?
ho provato a fare <= ma mi dà errore. non capisco non capisco.
grazie
Sat_
-- 
chmod a-rw The\ Untouchables.avi

 come mai me ne lascia sempre uno in più?
Te la sparo al volo (detto anche "a culo"): cicla al contrario:
 for(var i=remove.length-1;i>=0;i--)
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

  for(var i=remove.length-1;i>=0;i--)
ho risolto a culo, grazie :)
          for(var i = remove.length ; i>0 ; i--){
              container.removeChild(remove[i-1]);
          }
comunque questa è l'ultima volta che faccio tutto a mano, rubyonrails dalla
prossima volta ;)
ciao e grazie


 ho risolto a culo, grazie :)
:-)
era più o meno a culo...mi è capitata una cosa simile in un ambiente
completamente diverso ma la logica era la stessa: man mano che rimuovi la
length diminuisce e le posizioni si spostano, se provi a ragionarci un
attimo dovresti capire il problema (ergo all'ultimo, o agli ultimi,
elementi, non arrivi mai...)
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 elementi, non arrivi mai...)
credo che sia dovuto al fatto che gli array partono con indice 0 mentre il
lenght parte con 1.
o forse no?


 o forse no?
Direi di no. il length ti restituisce il numero di elementi (es. 3), dato
che però tutti gli array sono a base zero, nel nostro esempio di 3 elementi
avremo 0-1-2 (quindi i va da 0 a 2, ossia length-1). Era corretto quello
che avevi scritto:
for(i = 0; i < remove.length; i++){
             container.removeChild(remove[i]);
ma:
Esempio pratico del tuo script:
 Inizio: hai 3 elementi => i=0, length=3
 Togli il primo => hai 2 elementi i=1, length=2
 togli il secondo => hai 1 elemento  i=2, length=1
 a questo punto la tua variabile che cicla ha superato la length e quindi
esce (senza eliminare l'ultimo).
Se cicli invece al contrario questo problema non si presenta.
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.


beh allora invece che ciclare al contrario e' piu' intuitivo salvarsi la 
length in una variabile e usare quelle per il test. 

 length in una variabile e usare quelle per il test.
uhm ... secondo me no, anzi è peggio perché segnala errore. 
Riprendiamo l'esempio:
 Inizio: hai 3 elementi => i=0, length=3
 Togli il primo => hai 2 elementi i=1, length=3
 togli il secondo => hai 1 elemento  i=2, length=3
 a questo punto la tua variabile punta all'elemento 3 (i=2) che non esiste
più (avendo adesso un solo elemento dovrebbe puntare a i=0) e segnalerà
errore javascript.
Tutto quanto sopra a naso (non testato), che ne pensi?
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.


Giusto scusate. 

  for(var i=remove.length-1;i>=0;i--)
Premesso che sono assaaaaaaaaaai ignorante... ma cosi', a naso, mi viene da
pensare che, volendo rimuovere tutti i figli, potrebbe bastare fare:
while (container.firstChild) container.removeChild(container.firstChild);
Ho detto una grandissima cassata? Questo approccio potrebbe avere delle
controindicazioni? E' troppo "pesante"?
-- 
~Nando~ :-/__.oO
Apostolo della Prova

 while (container.firstChild) container.removeChild(container.firstChild);
Sì beh può essere, io partivo dalla struttura indicata da Musso...perché,
un container.innerHTML=""? (anche questa la ho sparata alla grassa,
peròperò...)


 peròperò...)
Ah, boh :-)
Btw, ho notato una cosa in FireFox... per testare, ho fatto un div con
all'interno un po' di elementi, compreso un anchor clickando sul quale si
elimina il contenuto del div. Quando si passa col mouse sull'anchor,
ovviamente nella barra di stato del browser viene visualizzato il link...
dopo il click, scompare il contenuto del div e nella barra di stato resta
il link di prima e non se ne va, resta fermo li' anche muovendo il mouse!
Boh...


 il link di prima e non se ne va, resta fermo li' anche muovendo il mouse!
Hai creato un link suicida! LOL ! (mi sembra il primo win95 dove andavi in
prompt di dos, gli sparavi un bel format c: e lui bellobbbelllo si
suicidava davanti ai tuoi occhi [e io godeeeeeevooo]!)
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.