Avatar billede rockst4r Nybegynder
25. maj 2006 - 20:07 Der er 11 kommentarer

Vis <select> alt efter valg i en anden <select>

Hejsa

Har et lille problem, som jeg vil løse på den bedste måde, men jeg er gået lidt i stå.

Jeg har én select box, hvori der er flere muligheder som hentes fra mysql. Når en value vælges i denne box, skal en JS function starte, som så skal vise en ny select box, simpelt nok.

Problemet er så hvis man i den første box, skifter value, så skal den anden select skifte indhold så det passer med den først.

Hvordan gør jeg det?
Avatar billede Six Nybegynder
25. maj 2006 - 20:28 #1
http://roenving.users.whitehat.dk/ <- og vælg nr4. multible selects.

Alt kredit går til roenving.
Avatar billede rockst4r Nybegynder
25. maj 2006 - 20:30 #2
Den fik jeg godt nok ik meget ud af :)
Avatar billede Six Nybegynder
25. maj 2006 - 20:32 #3
Det er måske ikke det du forsøger på? - i den på roenvings side ændre indholdet i de andre selects da efter hvad man vælger i den foregående.
Avatar billede rockst4r Nybegynder
25. maj 2006 - 20:38 #4
Jo det er det jeg forsøger på.

Jeg er bare nybegynder til JS, og forstår ikke koden
Avatar billede Six Nybegynder
25. maj 2006 - 20:42 #5
Ohh ok, jeg er heller ikke selv fremme i skoen hvad js angår. :D - så skal der nok en anden gut til, der kan hjælpe dig videre :D
Avatar billede mclemens Nybegynder
25. maj 2006 - 22:15 #6
Var lige lidt i scripting humør...
hvad med denne her - burde være lidt mere overskuelig :P


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

var optinpm=new Array();
var optinp=new Array();

/* Første option valg */
optinpm[optinpm.length]="Sko";
optinp[optinp.length]=new Array('Adidas','Fila','Levis','Nike','Wrangler');

/* Andet option valg */
optinpm[optinpm.length]="Bil";
optinp[optinp.length]=new Array('Audi','Ford','Mazda','Opel','Pontiac');

/* Tredje option valg */
optinpm[optinpm.length]="Slik";
optinp[optinp.length]=new Array('Heksehyl','Skolekridt','Skumbananer');

function domopt(tmpnr,tmpval){

  sel=document.getElementsByName(tmpnr)[0];
  while(sel.childNodes.length>0)sel.removeChild(sel.childNodes[0]);
  if(tmpnr=='drop1')tmparr=optinpm;
  else tmparr=optinp[tmpval];

  for(i=0;i<tmparr.length;i++){
    tmpnode=document.createElement("option");
    tmptxt=document.createTextNode(tmparr[i]);
    tmpnode.appendChild(tmptxt);
    sel.appendChild(tmpnode);
  }

  if(tmpnr=='drop1'){
    document.getElementsByName('drop2')[0].setAttribute("disabled","disabled");
    sel.onchange=function(){domopt('drop2',this.selectedIndex);}
  }else document.getElementsByName('drop2')[0].removeAttribute("disabled");

}

window.onload=function(){domopt('drop1');}

</script>

<style type="text/css">
html,body{padding:0px;margin:0px;}
body{margin:10px;}
div.leftit{float:left;width:100px;}
select{width:200px;}
</style></head>

<body>

<div class="leftit">Vælg type:</div>

<select size="1" name="drop1">
<option>Javascript kræves</option>
</select>

<br>

<div class="leftit">Vælg mærke:</div>

<select size="1" name="drop2">
<option>Javascript kræves</option>
</select>

</body></html>
Avatar billede mclemens Nybegynder
25. maj 2006 - 22:20 #7
optinpm[optinpm.length] og optinp[optinp.length]
kan også defineres som 0 i nr. 1 option
optinpm[0] og optinp[0]

hvorefter den stiger med 1 i hver efterfølgende option definering
optinpm[1] og optinp[1] (i option valg nr. 2 o.s.v.)

- det hele kan sikkert også puttes ind i (ikke testet det her)
var optinpm=new Array();
var optinp=new Array();

var optinpm=['Sko','Bil','Slik'];
var optinp=[['Adidas','Fila','Levis','Nike','Wrangler'],['Audi','Ford','Mazda','Opel','Pontiac'],['Heksehyl','Skolekridt','Skumbananer']]
Avatar billede mclemens Nybegynder
25. maj 2006 - 22:28 #8
det gjorde det, men der var en lille bug i min kode så poster lige forfra (sorry)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

var optinpm=['Vælg','Sko','Bil','Slik'];
var optinp=[['Vælg type'],['Adidas','Fila','Levis','Nike','Wrangler'],['Audi','Ford','Mazda','Opel','Pontiac'],['Heksehyl','Skolekridt','Skumbananer']];

function domopt(tmpnr,tmpval){



  sel=document.getElementsByName(tmpnr)[0];
  while(sel.childNodes.length>0)sel.removeChild(sel.childNodes[0]);
  if(tmpnr=='drop1')tmparr=optinpm;
  else tmparr=optinp[tmpval];

  for(i=0;i<tmparr.length;i++){
    tmpnode=document.createElement("option");
    tmptxt=document.createTextNode(tmparr[i]);
    tmpnode.appendChild(tmptxt);
    sel.appendChild(tmpnode);
  }

  if((tmpnr=='drop1')||(tmpnr=='drop2')&&(tmpval==0)){
    document.getElementsByName('drop2')[0].setAttribute("disabled","disabled");
    sel.onchange=function(){domopt('drop2',this.selectedIndex);}
  }else document.getElementsByName('drop2')[0].removeAttribute("disabled");

}

window.onload=function(){domopt('drop2',0);domopt('drop1',-1);}

</script>

<style type="text/css">
html,body{padding:0px;margin:0px;}
body{margin:10px;}
div.leftit{float:left;width:100px;}
select{width:200px;}
</style></head>

<body>

<div class="leftit">Vælg type:</div>

<select size="1" name="drop1">
<option>Javascript kræves</option>
</select>

<br>

<div class="leftit">Vælg mærke:</div>

<select size="1" name="drop2">
<option>Javascript kræves</option>
</select>

</body></html>
Avatar billede mclemens Nybegynder
25. maj 2006 - 22:30 #9
ret evt. array tildelingen i ovenstående til:
(giver længere kode men måske bedre overskuelighed)

var optinpm=new Array();
var optinp=new Array();

/* Standard nulstilling */
optinpm[0]="Vælg";
optinp[0]=new Array('Vælg type');

/* Første option valg */
optinpm[1]="Sko";
optinp[1]=new Array('Adidas','Fila','Levis','Nike','Wrangler');

/* Andet option valg */
optinpm[2]="Bil";
optinp[2]=new Array('Audi','Ford','Mazda','Opel','Pontiac');

/* Tredje option valg */
optinpm[3]="Slik";
optinp[3]=new Array('Heksehyl','Skolekridt','Skumbananer');
Avatar billede mclemens Nybegynder
25. maj 2006 - 22:37 #10
røde ører :D

sel.onchange=function(){domopt('drop2',this.selectedIndex);}

rettes til:

if(tmpnr=='drop1')sel.onchange=function(){domopt('drop2',this.selectedIndex);}
Avatar billede rockst4r Nybegynder
26. maj 2006 - 10:16 #11
Jeg er ved at fatte den på http://roenving.users.whitehat.dk/ nu.
Der er så bare 1 problem mere.

Jeg de forskellige options skal hives ud af en mysql db.

Det vil sige at dette skal ind i en while:

    ["Valg 1",[
        ["2. valg 1 (1)",
            ["3. valg 1 (1-1)","3. valg 2 (1-1)","3. valg 3 (1-1)","3. valg 4 (1-1)"]],
        ["2. valg 2 (1)",
            ["3. valg 1 (1-2)","3. valg 2 (1-2)","3. valg 3 (1-2)"]],
        ["2. valg 3 (1)",
            ["3. valg 1 (1-3)","3. valg 2 (1-3)","3. valg 3 (1-3)","3. valg 4 (1-3)"]]]],
    ["Valg 2",[
        ["2. valg 1 (2)",
            ["3. valg 1 (2-1)","3. valg 2 (2-1)","3. valg 3 (2-1)","3. valg 4 (2-1)"]],
        ["2. valg 2 (2)",
            ["3. valg 1 (2-2)","3. valg 2 (2-2)"]],
        ["2. valg 3 (2)",
            ["3. valg 1 (2-3)","3. valg 2 (2-3)","3. valg 3 (2-3)","3. valg 4 (2-3)","3. valg 5 (2-3)","3. valg 6 (2-3)","3. valg 7 (2-3)","3. valg 8 (2-3)","3. valg 9 (2-3)","3. valg 10 (2-3)","3. valg 11 (2-3)","3. valg 12 (2-3)","3. valg 13 (2-3)","3. valg 14 (2-3)","3. valg 15 (2-3)","3. valg 16 (2-3)","3. valg 17 (2-3)","3. valg 18 (2-3)","3. valg 19 (2-3)","3. valg 20 (2-3)","3. valg 21 (2-3)"]],
        ["2. valg 4 (2)",
            ["3. valg 1 (2-4)","3. valg 2 (2-4)","3. valg 3 (2-4)","3. valg 4 (2-4)"]]]],
    ["Valg 3",[
        ["2. valg 1 (3)",
            ["3. valg 1 (3-1)","3. valg 2 (3-1)","3. valg 3 (3-1)"]],
        ["2. valg 2 (3)",
            ["3. valg 1 (3-2)","3. valg 2 (3-2)","3. valg 3 (3-2)"]],
        ["2. valg 3 (3)",
            ["3. valg 1 (3-3)","3. valg 2 (3-3)","3. valg 3 (3-3)"]],
        ["2. valg 4 (3)",
            ["3. valg 1 (3-4)","3. valg 2 (3-4)","3. valg 3 (3-4)"]],
        ["2. valg 5 (3)",
            ["3. valg 1 (3-5)","3. valg 2 (3-5)","3. valg 3 (3-5)"]]]]
];


Men som i kan se, så er der et (,) mellem hver af de valg 1, 2 og 3 og ved den sidste er der en (;).
Hvordan får jeg lavet sådan et den sætter en (;) ved den sidste istedet for et (,) ?
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