Avatar billede nidu Nybegynder
05. september 2002 - 14:03 Der er 24 kommentarer og
1 løsning

Createlement

Hejsa.
Jeg skal bruge indholdet fra en selectbox og konverterer det til en <hidden> tag.

var added;
for (var i=0; i < window.document.personalizeForm.rightSelectBox.length; i++) {
  added = document.createElement("<INPUT TYPE='HIDDEN'>");
  added.name = window.document.personalizeForm.rightSelectBox.options[i].value;
  added.value = window.document.personalizeForm.rightSelectBox.options[i].value;
  window.document.personalizeForm.appendChild(added);
}

createelement virker ikke i Netscape. Er der nogen som har en god idé/løsning til hvordan man ellers kan lave det?
Avatar billede Slettet bruger
05. september 2002 - 14:07 #1
Tja, skal det virke i NS4+ eller bare i NS6+?
Avatar billede nidu Nybegynder
05. september 2002 - 14:08 #2
Det skal virke i minimum IE5+ og NS4.7+
Avatar billede Slettet bruger
05. september 2002 - 14:09 #3
Så er det ikke helt så enkelt. Med mindre du sætter alle hidden-felterne på siden først og så fylder værdi i dem bagefter.
Avatar billede nidu Nybegynder
05. september 2002 - 14:10 #4
Problemet er, at selectboxen er dynamisk og kan indeholde fra 0 til ? options - alt efter hvad brugeren vælger.
Avatar billede Slettet bruger
05. september 2002 - 14:11 #5
Er der ingen grænse for, hvad ? kan være?
Avatar billede Slettet bruger
05. september 2002 - 14:12 #6
Du kan selvfølgelig bare sende alle værdierne i ét hidden-felt, adskilt af kommaer. Så kan dit server-side sprog senere behandle dataene!
Avatar billede nidu Nybegynder
05. september 2002 - 14:14 #7
? kan være op til 250 eller noget i den retning, måske i fremtiden, at den er størrer.
Avatar billede jakoba Nybegynder
05. september 2002 - 14:16 #8
funktionerne
    document.createElement( ... )
og
    <htmlelement>.appendChild( ... )

er fra W3's DOM  de eksisterer ikke i Netscape4.7
Avatar billede nidu Nybegynder
05. september 2002 - 14:18 #9
Jakoba: Korrekt, men jeg søger en ligende løsning som kan anvendes i NS også.
Avatar billede Slettet bruger
05. september 2002 - 14:19 #10
arr = new Array();
for (i = 0; i < document.personalizeForm.rightSelectBox.length; i++)
arr[i] = document.personalizeForm.rightSelectBox.options[i].value;
document.personalizeForm.hid.value = arr.join(",");

Og husk så også lige hidden-feltet:

<input type="hidden" name="hid" value="">
Avatar billede Slettet bruger
05. september 2002 - 14:20 #11
Så kommer "hid" til at indeholde:

value1,value2,value3,value4

osv.
Avatar billede jakoba Nybegynder
05. september 2002 - 14:22 #12
Er det ikke blot en select-multiple du vil have? det er et standard formelement, som alle browsere kender.
vælg flere ved at holde <kontrol> tasten nede imens

<select multiple>
  <option value='nr0'>nummer 0</options>
  <option value='nr1'>nummer et eller andet</options>
  <option value='nr2'>nummer 2</options>
  <option value='nr3'>nummer 3</options>
... såmange options du vil
</select>

når formen submittes bliver alle vagte sendt med.

mvh JakobA
Avatar billede jakoba Nybegynder
05. september 2002 - 14:23 #13
Ups.  vagte -> valgte
Avatar billede Slettet bruger
05. september 2002 - 14:25 #14
Han vil vist have samtlige options sendt videre. Jeg kan forestille mig, at det er i forbindelse med et script à la:
http://javascript.internet.com/forms/form-swapper-2.html
Avatar billede nidu Nybegynder
05. september 2002 - 14:26 #15
Inden informationerne kommer serverside skal vi lave en lille workaround. Alle de valgte options i selectboxen, skal konverteres til en hiddentag (en tag pr. valgt element) og derefter skal siden submit'es.

Når brugeren trykke på save, skal siden udføre konverteringen inden submit. Kan det måske lade sig gøre at lave en document.write(HIDDENTAG), lige inden siden sendes?
Avatar billede Slettet bruger
05. september 2002 - 14:27 #16
Jamen hvorfor dog det? Det er da vanvittigt besværligt, når det kan gøres så meget enklere server-side!
Avatar billede nidu Nybegynder
05. september 2002 - 14:28 #17
phoenixv: lige nøjagtigt. Vi har alt den funktionalitet og der virker - det er bare den lille konvertering, som skal på plads for at informationerne kan behandles korrekt serverside.
Avatar billede Slettet bruger
05. september 2002 - 14:29 #18
Jamen, hvorfor kan du ikke bare bruge en komma-separeret liste? Det er vel ligeså godt som at modtage 250 variabler på én gang?
Avatar billede nidu Nybegynder
05. september 2002 - 14:29 #19
Webserveren har sin egen API, som vi helst ikke vil/må pille for meget med :-(
Avatar billede jakoba Nybegynder
05. september 2002 - 14:29 #20
det er præcis de samme informationer du får sendt til serveren. og der kan du så efterbehandle. hvorfra kommer dit behov for at generere en masse nye hidden-felter
Avatar billede Slettet bruger
05. september 2002 - 14:31 #21
Så er du da vist også lidt for låste i din opgave, hvis du ikke engang må rode lidt server-side. Det er højst tre-fire linjer, der skal laves om.
Avatar billede nidu Nybegynder
05. september 2002 - 14:31 #22
jakoba: Det er en bug serverside, bare en lappeløsning indtil der kommer en patch eller en anden mulighed viser sig.
Avatar billede Slettet bruger
05. september 2002 - 14:31 #23
Ellers skal du til at skrive til en skjult frame eller noget lignende, og det er da et farligt besvær, når det nu kan gøres så enkelt!
Avatar billede nidu Nybegynder
05. september 2002 - 14:33 #24
Jeg ved godt det er noget rod. Men jeg ville bare lige høre om der var en lille workaround for createelement (hvilket jeg går ud fra der ikke er).
Avatar billede Slettet bruger
05. september 2002 - 14:34 #25
Som sagt kan du vælge at skrive til en skjult frame. Og det er nok den eneste løsning så.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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