Avatar billede chr1234 Nybegynder
09. april 2007 - 11:53 Der er 8 kommentarer og
1 løsning

Mangler id i array

Jeg benytter dette script, som jeg fandt et sted her på eksperten - jeg har dog brug for nogle ændringer.

Jeg har to checkboxes, hvor den anden er afhængig af valget i den første. Det virker fint, men value i 2. checkbox er et navn - og jeg mangler et id, dvs. forskel på value og titel i checkboxen. Er der nogle, som kan hjælpe med at få denne med?

Jeg vil f.eks. gerne få:
Checkbox1: Titel=Windows 95, Value=1
Checkbox2: Titel=Win95-ver3, Value= $id

Yderligere vil jeg helst undgå at Windows95 skal være ID 1. Kunne scriptet laves sådan, at values i checkbox 1 kunne være et hvilket som helst ID fra en tabel, og at array i checkbox 2 virkede alligevel.

Jeg har i databasen 2 tabeller, og skal have hentet resultater ud fra tabel2, som hører til posten i tabel1.

---------------------

i <head>
<script type="text/javascript">
var models = new Array();
models[models.length] = ["win95-ver1","win95-ver2","win95-ver3","win95-ver4"]; // Windows 95
models[models.length] = ["98-version1"]; // Windows 98
models[models.length] = ["nt-version1"]; // Windows NT
models[models.length] = ["2000-ver1"]; // Windows 2000
models[models.length] = ["me-ver1"]; // Windows ME
models[models.length] = ["xp-ver1"]; // Windows XP
models[models.length] = ["xp64-ver1","xp64-ver2"]; // Windows XP - 64bit

function showModels(elm)
{
  //document.getElementById('lastGroup').style.display="none";
  var sel = elm.form.version;
  if(elm.selectedIndex==0)
  {
    sel.style.display = 'none';
  }else
  {
    sel.length = 1;
    var arrNum = elm.selectedIndex-1;
    for(i=0;models[arrNum].length>i;i++){
      sel.options[sel.length] = new Option(models[arrNum][i]);
      sel.style.display = 'inline';
    }
  }
}
</script>

i <body>

<form id="form" method="post" action="test2.php">
<p>Hvilket styresystem har du:
    <br/>
    <br/>
    <select name="system" onchange="showModels(this);document.getElementById('nextGroup').style.display=this.selectedIndex>0?'block':'none';">
  <option value="">-- Vælg her --</option>
  <option value="1">Windows 95</option>
  <option value="2">Windows 98</option>
  <option value="3">Windows NT</option>
  <option value="4">Windows 2000</option>
  <option value="5">Windows ME</option>
  <option value="6">Windows XP</option>
  <option value="7">Windows XP - 64bit</option>
</select>
    <br/>
    <br/>
   
<div id="nextGroup" style="display:none;">
    Hvilken version har du:
        <br/>
        <br/>
    <select name="version">
        <option value="">-- Vælg her --</option>
    </select>
   
    <input type="submit" value="Send oplysninger" id="send" name="send"/>
</div>
Avatar billede roenving Novice
09. april 2007 - 13:20 #1
Tjah umiddelbart handler det bare om at præsentere data på en fornuftig måde, eksempelvis i et associativt array af objekter:

models["Win95ID"] = {"win95-1":"win95-ver1","win95-2":"win95-ver2","win95-3":"win95-ver3","win95-4":"win95-ver4"}; // Windows 95

-- og så bliver det til:

  {
    sel.length = 1;
    var arrId = elm.value;
    for(obj in models[arrId]){
      sel.options[sel.length] = new Option(models[arrId][obj],obj);
    }
    sel.style.display = 'inline';
  }

-- absolut utestet !-)
Avatar billede chr1234 Nybegynder
09. april 2007 - 14:13 #2
der er fejl i scriptet, men jeg har ikke forstand på JS. kan du evt. hjælpe?
Avatar billede roenving Novice
09. april 2007 - 14:22 #3
Hrm, det virker hos mig ?-)

-- kan du vise dine koder ?o]
Avatar billede chr1234 Nybegynder
09. april 2007 - 15:29 #4
Hej igen, roenving

Jeg fandt denne udmærkede artikel: http://javascript.about.com/library/bldydrop1.htm, som virker rigtig godt. Jeg synes også, at den er opbygget mere logisk.

Ellers tak for hjælpen! Vil du have lidt points?
Avatar billede roenving Novice
09. april 2007 - 15:44 #5
Tjah, min har den opygning fordi den skal være nem at gå til, når man trækker ud af en database ...

-- og det, du henviser til, ser bestemt ikke ud til at være skrevet i forgårs, og en rigtig underlighed er, at der simpelthen er noget rigtig dårlig kode i, samtidig med at der blandes en mulighed fra en ret ny javascript-version sammen med en adressering, der var den eneste mulighed i de allerældste versioner, men hurtigt blev meget lettere at udføre ...

-- og det er fint, hvis du synes, den er mere logisk opbygget, men jeg ville altså kalde det skodkode, der ikke burde kunne publiceres i dette årtusind !-)
Avatar billede chr1234 Nybegynder
09. april 2007 - 15:57 #6
Du har garanteret ret, jeg kunne bare ikke få din tilføjelse til at virke - lige nu virker scriptet fra about.com dog, selvom du har ret i, at din ville have været mindre omstændig at integrere i f.eks. mit php-script.
Avatar billede roenving Novice
09. april 2007 - 16:02 #7
<script language="javascript" type="text/javascript">
var models = new Array();
models["Win95ID"] = {"win95-1":"win95-ver1","win95-2":"win95-ver2","win95-3":"win95-ver3","win95-4":"win95-ver4"}; // Windows 95
models["Win98ID"] = {"win98-1":"win98-ver1","win98-2":"win98-ver2","win98-3":"win98-ver3","win98-4":"win98-ver4"}; // Windows 98

function showModels(elm){
  var sel = elm.form.select2;
  if(elm.selectedIndex==0){
    sel.style.display = 'none';
  }else{
    sel.length = 1;
    var arrId = elm.value;
    for(obj in models[arrId]){
      sel.options[sel.length] = new Option(models[arrId][obj],obj);
    }
    sel.style.display = 'inline';
  }

}
</script>

<form id="minForm" name="minForm">
Vælg mærke:<br>
<select name="minSelect" id="minSelect" onchange="showModels(this);">
    <option value="">-- Vælg her --<br>
    <option value="Win95ID">Windows 95<br>
    <option value="Win98ID">Windows 98<br>
</select>
<br>Vælg model:<br>
<select name="select2" id="select2" style="display:none;">
    <option value="">-- Vælg her --<br>
</select>
<br>
<input type="submit" value="send">
</form>
Avatar billede chr1234 Nybegynder
05. juli 2007 - 13:42 #8
-
Avatar billede roenving Novice
05. juli 2007 - 17:19 #9
Fik du det til at virke ?-)
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