[JS+PHP] Kan Form element niet aanspreken

Pagina: 1
Acties:

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Hoi,

Ik heb een menu lijst (select tags, multiple select aan), en ik heb deze de naam Users[] gegeven zodat ik met PHP het lijstje als array kan doorlopen.
Maar ik heb ook een knopje waarmee je alle elementen in de lijst zou moeten kunnen selecteren, maar document.EditGroup.Users[] geeft deze error in mozilla:
code:
1
2
3
4
Error: syntax error
Source File: Line: 29, Column: 45
Source Code:
ElementCount = document.EditGroup.Users[].length;

Mijn vraag is dus, hoe kan ik met javascript deze lijst aanspreken?

-Edit-
Ik kan het trouwens wel via de elements array aanspreken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
FormElements = document.EditGroup.elements.length;
Index = 0;
for( Index = 0; Index < FormElements; Index++)
{
    if( document.EditGroup.elements[Index].name == "Users[]") break;
}
                    
ElementCount = document.EditGroup.elements[Index].length;
for( i = 0; i < ElementCount; i++)
{
    document.EditGroup.elements[Index][i].selected = true;
}

maar dat vind ik een beetje een vuile manier...

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


Verwijderd

Wat source waar ongeveer de fout zit zou misschien wel helpen..

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Op vrijdag 12 juli 2002 23:54 schreef Tizzwat het volgende:
Wat source waar ongeveer de fout zit zou misschien wel helpen..
nou, dat is dit dan: ElementCount = document.EditGroup.Users[].length .. of eigenlijk, alles wat maar een beetje doet met document.EditGroup.Users[]

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 31-08 12:55
Ok, dit probleem doet zich best vaak voor met PHP-ers die JS gaan doen... JS choked op die haken in de naam en gaat die als array interpreteren, wat dan vervolgens mislukt...

Je moet dus gebruik maken van het elements-array, beste is om dat dan zo te doen:

document.forms.MyForm.elements['Users[]'].length;

en daarna inderdaad dat in een for-loopje stoppen. Misschien niet zoals je het wilt, maar is de enige oplossing ;-)

Een handige manier om je code overzichtelijk te houden is een variable gebruiken als referentie naar de selectbox:

oSel = document.forms.MyForm.elements['Users[]'];

Maar dat wist je zelf ook wel denk ik...

Suc6

P.S. geloof dat de selected-property in NS 4.0 read-only is, maar ik weet dat niet heel zeker. Afhankelijk van de omgeving waarin je dit gaat zetten moet je dit misschien even checken...

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Op zaterdag 13 juli 2002 01:53 schreef Morrar het volgende:
Ok, dit probleem doet zich best vaak voor met PHP-ers die JS gaan doen... JS choked op die haken in de naam en gaat die als array interpreteren, wat dan vervolgens mislukt...

Je moet dus gebruik maken van het elements-array, beste is om dat dan zo te doen:

document.forms.MyForm.elements['Users[]'].length;

en daarna inderdaad dat in een for-loopje stoppen. Misschien niet zoals je het wilt, maar is de enige oplossing ;-)

Een handige manier om je code overzichtelijk te houden is een variable gebruiken als referentie naar de selectbox:

oSel = document.forms.MyForm.elements['Users[]'];

Maar dat wist je zelf ook wel denk ik...

Suc6

P.S. geloof dat de selected-property in NS 4.0 read-only is, maar ik weet dat niet heel zeker. Afhankelijk van de omgeving waarin je dit gaat zetten moet je dit misschien even checken...
Ah, ik wist niet dat de elements array ook namen pakte, is in ieder geval een wat betere oplossing dan eerst de index moeten opzoeken (ook wat minder vies ;)).
Ik gebruik momenteel mozilla, en daar is de selected property gewoon writable, die had ik trouwens uit de JavaScript reference van Netscape dus ik denk dat dat wel goed zit...?
Woohoo, werkt :) Bedankt :)

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 22:33

Pelle

🚴‍♂️

Inderdaad, zo'n beetje alles in een document zit in een array. Wil je iets aanspreken, doe dit dan zoveel mogelijk op de array-manier. Het is wellicht wat meer tikwerk, maar je code wordt er wel overzichtelijker van en je zult er nooit dit soort zaken mee tegenkomen.

Voorbeeldje:
code:
1
document.forms["blab"].elements["lerp"].length

Je weet nu meteen dat het om een form gaat met de naam blab, en in dat form het element lerp. Had je het zo gedaan:
code:
1
document.blab.lerp.length

Dan had het in principe alles kunnen wezen (blab een frame, lerp een gewone JS variabele om maar iets te noemen).
Die associatieve array's zijn er niet voor niets, gebruiken dus die handel :)

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Humm, ik doe het eigenlijk altijd met document.formname.elementsname.property... maar als het via de elements array "good practice" is, dan zal ik dat voortaan gebruiken :)

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs

Pagina: 1