[JScript] Array object parsen

Pagina: 1
Acties:

  • Dryw.Filtiarn
  • Registratie: September 2001
  • Laatst online: 18-03 12:10
Ik heb een array van hidden fields die in een array staan.
Voorbeeld hiervan is:
code:
1
2
3
4
5
6
7
8
9
10
11
<input type="hidden" name="checks[1]" value = "">
<input type="hidden" name="checks[1_1]" value = "">
<input type="hidden" name="checks[1_1_1]" value = "">
<input type="hidden" name="checks[1_1_1_2]" value = "">
<input type="hidden" name="checks[1_1_1_1]" value = "">
<input type="hidden" name="checks[1_1_2]" value = "">
<input type="hidden" name="checks[1_1_3]" value = "">
<input type="hidden" name="checks[1_1_3_3]" value = "">
<input type="hidden" name="checks[1_1_4]" value = "">
<input type="hidden" name="checks[1_1_5]" value = "">
<input type="hidden" name="checks[1_1_6]" value = "">

Nu moet ik dus doormiddel van jscript deze "array" doorlopen zodat ik van alle items hun waarde kan controleren.
Ik ben er achter dat je dit normaal kunt doen met:
code:
1
2
for( key in array ) {
}

Maar dat werkt hier op de een of andere manier niet.

Hoe kan ik dit wel oplossen, de search leverde mij niets op...

=( Protected by witchcraft )=


Verwijderd

Waarom zou dat niet werken? Het is gewoon een één-dimensionale array, en for..in.. zou gewoon moeten werken.
code:
1
2
3
4
for (var i in document.forms['formnaam'].elements)
{
  alert(i + ": " + document.forms['formnaam'].elements[i]);
}

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Cheatah heeft gelijk als het om de elements-array gaat, maar wat betreft de rest loopt het aardig in de soep zo:

checks[1] is een normale index van de Array op 1, terwijl checks[1_1] etc als index object-pointers gebruikt :P Probleem hierbij is dan weer dat de namen niet geldig zijn (mogen niet beginnen met getal)..

Als je zoiets serverside wil uitlezen hoef je de indexen niet mee te geven:

<input type="hidden" name="checks[]" value = "">
<input type="hidden" name="checks[]" value = "">
<input type="hidden" name="checks[]" value = "">
<input type="hidden" name="checks[]" value = "">

en verder is dan voldoende..

Wil je het wel zorg dan natuurlijk dat de indexen geldig zijn en gelijk zijn van type...

  • Dryw.Filtiarn
  • Registratie: September 2001
  • Laatst online: 18-03 12:10
Op woensdag 01 mei 2002 10:37 schreef Bosmonster het volgende:
Cheatah heeft gelijk als het om de elements-array gaat, maar wat betreft de rest loopt het aardig in de soep zo:

checks[1] is een normale index van de Array op 1, terwijl checks[1_1] etc als index object-pointers gebruikt :P Probleem hierbij is dan weer dat de namen niet geldig zijn (mogen niet beginnen met getal)..

Als je zoiets serverside wil uitlezen hoef je de indexen niet mee te geven:

<input type="hidden" name="checks[]" value = "">
<input type="hidden" name="checks[]" value = "">
<input type="hidden" name="checks[]" value = "">
<input type="hidden" name="checks[]" value = "">

en verder is dan voldoende..

Wil je het wel zorg dan natuurlijk dat de indexen geldig zijn en gelijk zijn van type...
Dat is mij bekend, maar die keys die hebben een waarde die ik nodig heb voor later in de scripts :) Maar toch bedankt...

Cheatah: Ik zal even proberen

=( Protected by witchcraft )=


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Op woensdag 01 mei 2002 10:41 schreef Dryw.Filtiarn het volgende:

[..]

Dat is mij bekend, maar die keys die hebben een waarde die ik nodig heb voor later in de scripts :) Maar toch bedankt...

Cheatah: Ik zal even proberen
Jawel, maar checks[1_1] gebruikt als index een object met de naam 1_1, en niet simpelweg een string "1_1". Hier ga je dus foutmeldingen op krijgen als je er werkelijk wat mee wilt doen..

Zet overal ff een letter voor en enkele quotes omheen.

<input type="hidden" name="checks['c1']" value = "">
<input type="hidden" name="checks['c1_1']" value = "">
<input type="hidden" name="checks['c1_1_1']" value = "">

Verwijderd

Op woensdag 01 mei 2002 10:45 schreef Bosmonster het volgende:

Jawel, maar checks[1_1] gebruikt als index een object met de naam 1_1, en niet simpelweg een string "1_1". Hier ga je dus foutmeldingen op krijgen als je er werkelijk wat mee wilt doen..
Correct, daar had ik even niet aan gedacht :)

  • Dryw.Filtiarn
  • Registratie: September 2001
  • Laatst online: 18-03 12:10
Maar leg even uit waarom
code:
1
alert( document.forms['myform'].elements['checks[1_1]'].value );

wel gewoon werkt dan...

=( Protected by witchcraft )=


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Op woensdag 01 mei 2002 10:50 schreef Dryw.Filtiarn het volgende:
Maar leg even uit waarom
code:
1
alert( document.forms['myform'].elements['checks[1_1]'].value );

wel gewoon werkt dan...
omdat de naam van het input veld nog steeds gewoon is wat je opgeeft, "checks[1_1]". Het gaat er echter om, dat als je er wat mee wilt gaan doen, checks[1_1] geen geldige waarde op zal leveren.

Maaruh.. leg jij anders ff uit waarom je in hemelsnaam een constructie als deze MOET gebruiken?

  • Dryw.Filtiarn
  • Registratie: September 2001
  • Laatst online: 18-03 12:10
Het gaat hier om een boomstructuur waarbij ik deze waarden nodig heb.

Dus zoiets als:
code:
1
2
3
4
5
6
7
8
9
10
11
1
|- 1_1
|   |- 1_1_1
|   |   |- 1_1_1_1
|   |   |- 1_1_1_2
|   |   
|   |- 1_1_2
|    
|- 1_2
|   |- 1_2_1
|   |- 1_2_2

=( Protected by witchcraft )=


  • Dryw.Filtiarn
  • Registratie: September 2001
  • Laatst online: 18-03 12:10
code:
1
2
3
4
5
6
7
8
9
10
<input type="hidden" name="checks['c1_1']" value = "">
<input type="hidden" name="checks['c1_1_1']" value = "">
<input type="hidden" name="checks['c1_1_1_2']" value = "">
<input type="hidden" name="checks['c1_1_1_1']" value = "">
<input type="hidden" name="checks['c1_1_2']" value = "">
<input type="hidden" name="checks['c1_1_3']" value = "">
<input type="hidden" name="checks['c1_1_3_3']" value = "">
<input type="hidden" name="checks['c1_1_4']" value = "">
<input type="hidden" name="checks['c1_1_5']" value = "">
<input type="hidden" name="checks['c1_1_6']" value = "">

zoals je ziet inmiddels aangepast...

Maar ik kom nog niks verder eigenlijk...
code:
1
2
3
4
for (var i in document.forms['formnaam'].elements)
{
  alert(i + ": " + document.forms['formnaam'].elements[i]);
}

Geeft wel heel veel terug, ook alle checks velden wel, maar ook als checks['c1_1_5'] en dus kennelijk niet als array :{

=( Protected by witchcraft )=


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

aha een boom, verwachtte ik al.. is toch een stuk makkelijker om de checkboxes gewoon een opeenvolgend nummer te geven en de "tree-waarde" in de value?

dus

<input type="hidden" name="check0" value="1">
<input type="hidden" name="check1" value="1_1">
<input type="hidden" name="check2" value="1_1_1">

dan kun je met een gewone for of while loop er doorheen
code:
1
2
3
4
5
var i=0;
while(document.formulier.elements["check"+i]){
   alert(document.formulier.elements["check"+i].value);
i++
}

(niet getest, maar in theorie moet het werken ;))

  • Dryw.Filtiarn
  • Registratie: September 2001
  • Laatst online: 18-03 12:10
[oeps] slecht gelezen :{

Maar anyway, ik ben er denk ik nu wel uit...

=( Protected by witchcraft )=

Pagina: 1