03. september 2002 - 16:08Der 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?
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.
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.
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.
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.
Synes godt om
Ny brugerNybegynder
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.