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

lave options i en select via et array

hvordan kan man lave <options> i en <select> via et array? :)
Avatar billede michael_stim Ekspert
15. juli 2006 - 16:31 #1
ja
Avatar billede michael_stim Ekspert
15. juli 2006 - 16:32 #2
Hov, hvordan ;o)
Avatar billede michael_stim Ekspert
15. juli 2006 - 16:32 #3
Avatar billede supermand69 Nybegynder
15. juli 2006 - 16:50 #4
ja?
Avatar billede michael_stim Ekspert
15. juli 2006 - 17:07 #5
punkt 4 (#4)
Avatar billede supermand69 Nybegynder
15. juli 2006 - 17:40 #6
jeg er ikke helt med på hvordan det laves?

grunden til at jeg skal have det lavet er fordi at den samme select vises mange steder og der er utrolig mange options, så det tager simpelthen for lang tid at loade siden hvis man skal loade det hele som færdigt..

hvis options blev lavet i klienten ville det helt sikkert spare en masse
Avatar billede michael_stim Ekspert
15. juli 2006 - 18:12 #7
Her er roenvings script (reduceret en del):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script language="javascript" type="text/javascript">
var arr = ["Valg 1","Valg 2","Valg 3","Valg 4"];
       
function initSels(){
    createOpts(document.getElementById('sel1'));
}

function createOpts(sel){
    var s = new Array();
    var num = 0, txt = "arr";
    var ar = opt = null;
    var n = sel.selectedIndex;
    var args = createOpts.arguments.length;
    for(var i=1;args>i;i++){
        s[i-1] = document.getElementById(createOpts.arguments[i]);
        if(s[i-1]==sel)num=i;
    }
    if(args>1){
        if(s[num])sel = s[num];
        else return;
    }
    if(n==0&&args>1){
        for(i=num;args>i+1;i++){
            s[i].length = 0;
            opt = document.createElement('OPTION');
            s[i].appendChild(opt);
            opt.value = "";
            opt.text = "\74-- Vælg --";
        }
        return true
    };
    for(i=0;num>i;i++){
        txt+="["+(s[i].selectedIndex-1)+"][1]";
    }
    ar = eval(txt);
    sel.length = 0;
    opt = document.createElement('OPTION');
    sel.appendChild(opt);
      opt.value = "";
      opt.text = "-- Vælg --";
    for(i=0;ar.length>i;i++){
        opt = document.createElement('OPTION');
        sel.appendChild(opt);
        if(typeof ar[i] == 'object'){
            opt.value = ar[i][0];
              opt.text = ar[i][0];
        }else{
            opt.value = ar[i];
            opt.text = ar[i];
          }
    }
}
</script>
</head>
    <body onload="initSels()">
        <form name="sels" action="">
        <select name="sel1" id="sel1">
        </select>
        </form>
    </body>
</html>

Kan sikkert reduceres mere...
Avatar billede supermand69 Nybegynder
15. juli 2006 - 21:26 #8
må ærligt indrømme at det virker ret forvirrende...

i min array med options skal jeg også bruge key som er et id
Avatar billede michael_stim Ekspert
15. juli 2006 - 21:55 #9
Avatar billede supermand69 Nybegynder
15. juli 2006 - 22:05 #10
kan man egentlig ikke selv sætte en nøgle i et array i JS??

eks.

array(54 => 'noget', 3 => 'hehe')
Avatar billede supermand69 Nybegynder
16. juli 2006 - 11:47 #11
jeg er kommet frem til noget her, men select boksen tilpasser sig ikke i længden efter længden af options

http://temp.electrobeat.dk/v2/_tst2.php
Avatar billede michael_stim Ekspert
16. juli 2006 - 12:29 #12
lav en style i din select:
style="width:140px;"
eller hvor bred du vil have den.
Avatar billede supermand69 Nybegynder
16. juli 2006 - 12:54 #13
det er vel sådan roenving har lavet det?
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