[JS+DOM] loop door elements slaat de helft over

Pagina: 1
Acties:

  • wboard
  • Registratie: Juli 2002
  • Laatst online: 04-04-2022

wboard

-=<wboard>=-

Topicstarter
Ik heb werkelijk alles al geprobeerd, maar hij blijft hetgene wat ik wil dat hij doet, NIET doen!.

Met de onderstaande functie worden rijen verwijdert, die aangevinkt zijn met een bepaalde checkbox(in dit geval met de naam 'active[]'). De checkbox 'active' heeft als value het id van de Div die verwijdert moet worden, ook heb ik het met parentNode al geprobeerd, alleen hij blijft de even / oneven overslaan. Alle variabelen zijn uniek, dus worden niet dubbel gebruikt.

p.s. ik weet dat dit in de onderstaande code theoretisch niet valid is.
code:
1
if(form.elements[i].type == 'checkbox' && form.elements[i].name.match(pattern) && form.elements[i].checked == false)



code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        var row = 'active';
        var pattern = new RegExp('^' + row + '\\\[\\\d+\\]$');

        if (whatToManage == 'deleteAllRowsNotChecked')
        {
            for(var i = 0; i < form.length; i++)
            {
                if(form.elements[i].type == 'checkbox' && form.elements[i].name.match(pattern) && form.elements[i].checked == false)
                {
                    alert(form.elements[i].value);
                    manageRow(destination,'deleteRow',form.elements[i].parentNode.parentNode.parentNode.parentNode.getAttribute('id'));
                }
            }
        }

A smooth sea never made a skilled sailor


  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 12:24
Zeg, als je een element verwijderd en je daarna het element erna wil bewerken, dan kom je 2 elementen verder dan voorheen.
Doordat je een element verwijderd, worden de latere elementen een plek opgeschoven.

Als je nu van de laatste naar de eerste de loop afloopt, zou het wel goed moeten gaan.

Dus
code:
1
 for( int i= form.length; i >= 0; i-- ){...}

let the past be the past.


Verwijderd

SPee schreef op dinsdag 11 juli 2006 @ 17:03:
code:
1
 for( int i= form.length; i >= 0; i-- ){...}
Is goed, inderdaad, maar dan toch wel eentje eerder beginnen, en var gebruiken als keyword:
JavaScript:
1
 for(var i= form.length-1; i >= 0; i-- )

[ Voor 9% gewijzigd door Verwijderd op 11-07-2006 17:14 ]


  • wboard
  • Registratie: Juli 2002
  • Laatst online: 04-04-2022

wboard

-=<wboard>=-

Topicstarter
ok, duidelijk! tnx

A smooth sea never made a skilled sailor