Avatar billede backupmand Nybegynder
03. september 2002 - 16:08 Der er 4 kommentarer og
1 løsning

Fortsætte med at fange værdier til javascript array (jsp fil).

Jeg kan ikke rigtigt visualisere eller forklare på en bedre
måde end jeg vil gøre nu.

På en jsp side er der en knap, der kalder en javascript funktion,
der åbner et nyt vindue. I dette nye vindue, indtastes en værdi
i en textbar som skal fanges tilbage i det oprindelige vindue, i et array af
en bestemt størrelse.

I det nye vindue benytter jeg mig af flg for at overføre
den værdi der er tastet ind:
<input type="text" name="text1" maxlength="30"
size="40" onChange="opener.test(this.value)">

Jeg kalder en metode i det opr. vindue, der hedder test og overfører den indtastede
værdi.

Men hvordan bliver jeg ved med at fange en værdi til der ikke
er mere plads i arrayet?

Jeg ville gerne kalde den samme metode, blive ved med det indtil
arrayet er fuldt.

Jeg forestiller mig at arrayet erklæres udenfor funktionen test
i det oprindelige vindue. Dernæst, eventuelt i en løkke,
skulle værdierne så lægges ind.

function test(val) {
for (var i=0;i<10;i++)
    mitarray[i]=val
}

Men problemet er, at arrayet bliver fyldt op med
den samme værdi, som blev tastet ind første gang.

Jeg tror jeg blvier nødt til at lave en counter
af en slags, men hvor?

Tak!
Avatar billede bearhugx Nybegynder
03. september 2002 - 16:18 #1
Hmm.. måske du får mere respons i JavaSCRIPT kategorien

(Netscape skulle sgu' ha' holdt fast i LiveScript!)

/Søren Munk Skrøder
Avatar billede soelvpil Nybegynder
03. september 2002 - 16:21 #2
Dit spørgsmål hører egentlig til i Javascript-forum, men ok.

Jeg tror der er to problemer. Din test-funktion putter blot samme værdi ind på alle pladser, det er vist ikke det du egentlig vil. Du vil vel putte værdien ind i den første tomme plads. Dette kan du entetn opnå ved en counter (en variabel der holder styr på, hvilken plads der sidst er fyldt op. Alternativt kan du blot rende arrayet igennem til du finder en tom plads, og så fylde op der. ALtså noget i stil med

for (var i=0;i<10;i++) {
  if (mitarray[i]=='') {
    mitarray[i]=val;
    break;
  }
}

Et andet problem er dit tekst-felt, jeg mener ikke at onchange-events bliver affyret hele tiden, men kun f.eks. hvis fokus skifter. Det ville nu heller ikke være heldigt, for hvis man ville ændre værdien fra 3 til 4, så kunne der først stå 3, herefter 34 og til sidst 4 (eller 3 efterfulgt af '' og så 4). Så jeg ville klart foretrække en lille "knap" at trykke på, når brugerens rettelse skal registreres.
Avatar billede backupmand Nybegynder
03. september 2002 - 17:48 #3
jeg ved ikke om spg hører til under javascript for næste problem
er, hvornår der submittes til servletten, efter at arrayet er fyldt ud.
Jeg har måske selv svaret på spørgsmålet.
Avatar billede soelvpil Nybegynder
03. september 2002 - 19:09 #4
OK, det betyder så, at du skal have dit array i et (hidden) input-felt.

Det letteste må så være at have et skjult felt i din form. Når arrayet er fuldt, puttes alle værdier ind i det skjulte felt, f.eks. som en lang kommasepareret streng, hvorefter formen submittes via Javascript. Modtagerservletten kan så bruge en StringTokenizer til at parse feltet og lave det til et array (eller en collection).

Det betyder dog, at hvis du alligevel hælder alle værdieren i et input-felt, så kan du ligeså godt putte dem ind løbende efterhånden som tekstfeltet i det åbne vindue ændres, og helt springe array'et over.
Avatar billede backupmand Nybegynder
04. september 2002 - 23:40 #5
Hejsa .. det sidste du nævnte virkede for mig, soelvpil. Der er nu bare
nogle småproblemer som arrayindexoutofboundsexception mv jeg skal kigge på,
så dit svar må godtages.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester