Toon posts:

[js] niet alles uit select verwijderd

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende functie die alle geselecteerde options uit een select verwijderd

code:
1
2
3
4
5
6
7
8
function verwijder() {
  var count = document.all.D1.options.length;
    for (var i=0;i<count;i++) {
      if (document.all.D1.options(i).selected) {
        document.all.D1.options.remove(document.all.D1.options(i));
      }
    } 
}


Ik heb ook nog een functie die alle elementen in een keer selecteerd d.m.v. een button. Dat gaat allemaal goed. Alleen als ik ze nu allemaal wil verwijderen dan verwijdert hij maar een random aantal, elke keer andere.

Man, this is weird.

Verwijderd

edit:
oops. niet goed gelezen

code:
1
2
3
4
5
6
7
8
var aOptions = document.forms[0].D1.options;
var aNewOptions = new Array();
for(var i=0; i<aOptions.length; i++) {
    var oOption = aOptions[i];
    if(!oOption.selected)
        aNewOptions[aNewOptions.length] = oOption;
}
aOptions = aNewOptions;

Niet getest, zou kunnen werken...

Verwijderd

FF getest....werkt niet :X

Verwijderd

Topicstarter
Ik zie weinig remove in die functie

Verwijderd

Verwijderd schreef op 16 oktober 2002 @ 16:49:
Ik zie weinig remove in die functie
Klopt. De gedachtengang was als volgt: Kopieer alle elementen die niet geselecteerd zijn naar een nieuw array, en ken die array toe aan de options array van het select-element...

Ik zal ff kijken of ik iets anders kan verzinnen... :o

Verwijderd

Begin op het einde en niet het begin. Als je element 0 verwijderd schijft de rest op (DUH?). Begin bij count-1 en eindig op 0

for(i=(count-1);i>=0;i--)

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

alles verwijderen :?
document.forms['tha_form'].elements['select_thingy'].length = 0;

offtopic:
heb niet gehele post doorgelezen, dus vergeef me als ik rare dingen roep

Today's subliminal thought is:


Verwijderd

Topicstarter
Van achter beginnen werkt ook niet want als je bijvoorbeeld het derde element wlt verwijderen dan verwijderd ie de eerste en de tweede ook

Verwijderd

Van achter beginnen werkt ook niet want als je bijvoorbeeld het derde element wlt verwijderen dan verwijderd ie de eerste en de tweede ook
Dat hoort niet, moet dan aan je code liggen.

Verwijderd

Ik zie het al. Je hebt de volgende fout gemaakt:
de methode remove verwacht als argument een zero-based index van het element dat je wilt verwijderen. Dus voor het 1e element een 0, het 2e element een 1, etc. Jij geeft het hele option object mee.

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Dit is een bekende fout.
Stel je hebt 5 items.

Item 1 ( ID=0 )
Item 2 ( ID=1 )
Item 3 ( ID=2 )
Item 4 ( ID=3 )
Item 5 ( ID=4 )

En je doet een for(i=0;i<=5;i++) dan gaat dat mis. Omdat als je dan de 2e verwijderd, de ID`s van item 3 tm 5 1 verlagen. MAAR die I blijft hetzelfde, en wordt zelf weer met 1 verhoogd.

Oplossing
Doe een While loop.
code:
1
2
3
4
5
i = 0;
while (options(i) <> nil) 
{
  if (blabla) remove else i++;
}


Niet getest (duh) maar dit is het idee iig.

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Annie:
alles verwijderen :?
document.forms['tha_form'].elements['select_thingy'].length = 0;
document.forms['tha_form'].elements['select_thingy'].options.length = 0; dan toch :? ;)
offtopic:
heb niet gehele post doorgelezen, dus vergeef me als ik rare dingen roep
:X

overigens is het misschien niet helemaal nutteloos om er op te wijzen dat mboom VBScript gebruikt, en JavaScript door elkaar gebruikt (denk ik), gezien hij/zij gebruik maakt van () index-operators, ipv []
code:
1
document.all.D1.options.remove(document.all.D1.options(i));

tot slot hoop ik dat je weet dat document.all IE only is

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:19

crisp

Devver

Pixelated

drm schreef op 17 oktober 2002 @ 18:06:
[...]
tot slot hoop ik dat je weet dat document.all IE only is
...en daarbij eigenlijk alleen nuttig is in IE4 ;)

Intentionally left blank


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

drm schreef op 17 oktober 2002 @ 18:06:
[nohtml]
[...]

document.forms['tha_form'].elements['select_thingy'].options.length = 0; dan toch :? ;)
* Annie gaat zich effe schamen in een hoekje 8)7 :o

Today's subliminal thought is:

Pagina: 1