Avatar billede supermand69 Nybegynder
16. juli 2006 - 12:58 Der er 38 kommentarer og
1 løsning

option i select

Hej

Jeg forsøger at lave en select med options via et array, men jeg kan ikke helt få det til at virke.. når siden loader bliver select længden ikke sat, og man kan ikke se valgmulighederne

http://temp.electrobeat.dk/v2/_tst2.php
Avatar billede michael_stim Ekspert
16. juli 2006 - 13:31 #1
Se hvad jeg har skrevet i det foregående spörgsmål...
<select style="width:145px;"....
Avatar billede arriva Nybegynder
16. juli 2006 - 13:32 #2
Hvad med bare at style din select?
Hvis det skal gøres i javascript kunne du evt. gøre noget a la:
1) i dine løkker, bestemt længden af den største string altså f.eks.
    var max_lenght=0;
    ...
    if(text1_arr[i].Lenght()>max_lenght) max_lenght=text1_arr[i].Lenght();
2)
  Style selects'ne, f.eks.:
  document.forms[0].getElementById("sel1").style.width=max_lenght + "px";

Kan godt være du er nød til at gange max_lenght med et passende tal for at det kommer til at se ordentligt ud.
Avatar billede supermand69 Nybegynder
16. juli 2006 - 13:40 #3
arriva > jeg har set lidt på den her hvordan længden bliver sat, men jeg fatter ikke særlig meget javascript :-/

http://roenving.users.whitehat.dk/WD4Selects-beta.html
Avatar billede supermand69 Nybegynder
16. juli 2006 - 14:15 #4
når man så har max_length, hvordan smider man den så ind i sin select så den får den længde som den skal have?
Avatar billede arriva Nybegynder
16. juli 2006 - 14:22 #5
document.forms[0].getElementById("sel1").style.width=max_lenght + "px";
Avatar billede Slettet bruger
16. juli 2006 - 15:01 #6
Benyt:

try {
  sel.add(opt, null); // standards compliant; doesn't work in IE
} catch(e) {
  sel.add(opt); // IE only
}

Til at tilføje elementerne!
Avatar billede supermand69 Nybegynder
16. juli 2006 - 15:16 #7
just > jeg har tilføjet det, men får fejl
Avatar billede Slettet bruger
16. juli 2006 - 15:20 #8
Kan du linke din tilføjelse? Jeg testede inden jeg postede og det virkede fint!
Avatar billede Slettet bruger
16. juli 2006 - 15:21 #9
Ah, det er jo rettet i ovenstående link!

Du har glemt at fjerne sel.appendChild
Avatar billede supermand69 Nybegynder
16. juli 2006 - 15:25 #10
just > din løsning virker som den skal, men jeg er ikke meget for at bruge "crossbrowser" løsninger..

jeg kunne godt tænke mig at vide hvordan roenving har løst problemet? :)
Avatar billede Slettet bruger
16. juli 2006 - 17:17 #11
Jeg ved ikke helt hvad du mener med crossbrowser løsninger?

Ifølge http://www.w3schools.com/htmldom/dom_obj_select.asp under Select Object Methods følger ovenstående w3c standarden! At så IE ikke lever op til standarden er jo ikke noget nyt...
Avatar billede tdafoobar Nybegynder
16. juli 2006 - 17:24 #12
o_O , hvad er det dog for en masse vrøvl ?

Kan du forklare hvad eksemplet skal kunne ? så laver jeg lige noget kode.
Avatar billede Slettet bruger
16. juli 2006 - 17:32 #13
tdafoorbar>> Kan du ikke lige uddybe hvor jeg vrøvler, så jeg kan få rettet op på min forståelse af stoffet?
Avatar billede tdafoobar Nybegynder
16. juli 2006 - 17:35 #14
jeg mente alt det foreslåede kode. Det kan skrives meget bedre. Er ved at lave et eksempel.
Avatar billede Slettet bruger
16. juli 2006 - 17:39 #15
Roenings virker fordi han definerer den første indgang i hver option select som attribut værdier!

<form name="sels" action="http://roenving.users.whitehat.dk" onsubmit="return false;">
To afhængige selects:&nbsp;&nbsp;&nbsp;
<select name="sel1" id="sel1" onchange="createOpts(this,'sel1','sel2');">
<option value="" selected>Vis alle</option>
</select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<select name="sel2" id="sel2">
<option value="" selected
>&lt;-- Vælg --</option>
</select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>

Tre afhængige selects:&nbsp;&nbsp;&nbsp;
<select name="sel3" id="sel3" onchange="createOpts(this,'sel3','sel4','sel5');">
<option value="" selected>Vis alle</option>
</select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<select name="sel4" id="sel4" onchange="createOpts(this,'sel3','sel4','sel5');">
<option value="" selected>&lt;-- Vælg --</option>
</select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<select name="sel5" id="sel5">
<option value="" selected
>&lt;-- Vælg --</option>
</select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>
</form>

Jeg vil forøvrigt give tdafoobar ret i at det er noget rod!
Avatar billede tdafoobar Nybegynder
16. juli 2006 - 17:42 #16
er det meningen af der kun skal vælges de titles der passer til den valgte artist ?
Avatar billede Slettet bruger
16. juli 2006 - 17:43 #17
Hvis Roenings smed en select option ind der var længere end "-- Vælg --" ville han jo nok få samme problem!

Jeg vil stadig mene at add er den "korrekte" måde at tilføje options dynamisk til en option select, men jeg er da altid klar på at lære noget nyt!
Avatar billede tdafoobar Nybegynder
16. juli 2006 - 17:44 #18
Kig på koden her: http://olisan.dk/new/720875.php

Den korrekte måde er:

            sel1.options[i] = new Option(artists[i],values[i]);

Hvor sel1 er dit HtmlSelectElement
Avatar billede tdafoobar Nybegynder
16. juli 2006 - 17:45 #19
og den virker crossbrowser.
Avatar billede Slettet bruger
16. juli 2006 - 17:46 #20
tdafoobar>> Alle tiders! Den var jeg ikke stødt på før!
Avatar billede supermand69 Nybegynder
16. juli 2006 - 17:46 #21
just > jeg har her copy/pasted roenvings kode ind her
http://temp.electrobeat.dk/v2/_tst.php

jeg har ændret i array'et til den første option, og her virker det :)
Avatar billede supermand69 Nybegynder
16. juli 2006 - 17:48 #22
tdafoobar > nej, altså mine selects er som de skal være.. eneste problem er at selecten ikke får den rette længde så man kan se hele teksten i alle option
Avatar billede tdafoobar Nybegynder
16. juli 2006 - 17:48 #23
sel2.options[i] = document.createElement("option"); skulle også virke, men den har ikke pr. default value attribute og nodeValue option.

Dette er hvad roenving gør i sin kode, dvs. den er mere DOM baseret.
Avatar billede tdafoobar Nybegynder
16. juli 2006 - 17:49 #24
supermand69

bruge style attributen ?
Avatar billede Slettet bruger
16. juli 2006 - 17:55 #25
Prøv at tilføje med new Option som tdafoobar foreslår...det skulle jo også virke!
Avatar billede supermand69 Nybegynder
16. juli 2006 - 17:57 #26
tdafoobar > er ikke helt med? gider du smide det ind i en af mine funktioner?
Avatar billede Slettet bruger
16. juli 2006 - 17:58 #27
supermand69>> Prøv at se hvad der sker hvis du fjerner hans option tag fra den første select! Så passer bredden ikke længere...
Avatar billede supermand69 Nybegynder
16. juli 2006 - 18:05 #28
just > hvem? hehe.. roenving eller tda?
Avatar billede Slettet bruger
16. juli 2006 - 18:06 #29
Roenving :)
Avatar billede Slettet bruger
16. juli 2006 - 18:10 #30
function opt_type1(sel) {
for (var i = 0; i < artist_arr.length; i++)
      sel.options[i] = new Option(artist_arr[i],value_arr[i]);
}
Avatar billede supermand69 Nybegynder
16. juli 2006 - 18:13 #31
tda > lav et svar så deler I points :)

det kunne heller ikke passe at eneste mulighed var at bruge styles
Avatar billede Slettet bruger
16. juli 2006 - 18:17 #32
Giv bare pointene til tdafoobar...det er jo hans løsning....
Avatar billede tdafoobar Nybegynder
16. juli 2006 - 18:20 #33
okay :p

Jeg mente da også at en select burde udvide sig selv , når man puttere størrer content i dynamisk ? gør den ikke også det hvis du bruger 'new Option(...') ?
Avatar billede supermand69 Nybegynder
16. juli 2006 - 18:21 #34
tda > tjek min kode her..
http://temp.electrobeat.dk/v2/_tst2.php

jo nu virker det perfekt! :D
Avatar billede tdafoobar Nybegynder
16. juli 2006 - 18:27 #35
det var jo godt :)

og tak for teh points.
Avatar billede Slettet bruger
16. juli 2006 - 18:43 #36
tdafoobar>> Bredden bliver tilsyneladende ikke udvidet når man benytter appendChild til at tilføje options...jvf. supermand69's oprindelige kode!
Avatar billede supermand69 Nybegynder
16. juli 2006 - 23:51 #37
jeg har forresten lige et par andre småting jeg ikke lige ved om nogen af jer hurtigt kan give mig et svar på?

1.
hvordan kan man smide en style på options?
style="text-transform:capitalize"

2.
hvordan kan man tilføre "selected" på en af sine options?
Avatar billede roenving Novice
18. juli 2006 - 15:39 #38
option.selected = true;
Avatar billede supermand69 Nybegynder
19. juli 2006 - 18:52 #39
Jeg har lige en ting mere med det script der, men har lige oprettet et nyt spørgsmål
http://www.eksperten.dk/spm/721409
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