Avatar billede henriklaursen Nybegynder
25. maj 2004 - 16:05 Der er 14 kommentarer og
1 løsning

Lave en option selected med javascript.

Hej

jeg har en funktion som laver en select liste.

men kan man efterfølgende køre en funktion, der så sætter den <option> der har en value på f.eks. 5, til at være selected. ?

noget i denne tanke : document.form.select.option[0] = selected;
Avatar billede grunken Nybegynder
25. maj 2004 - 16:11 #1
sådan ?

elm = document.formnavn.selectnavn.options;
for(i=0;i<elm.length;i++){
if(elm[i].value=="5"){
  elm[i].selected=true;
  break;
  }
}

Men ellers ville det måske være rart at se funktionen der bygger din selcetbox :o)
Avatar billede roenving Novice
25. maj 2004 - 16:12 #2
sel = document.FORMNAME.SELECTNAME;
for(i=0;sel.length>i;i++)
  if(sel.options[i].value=='5')
    sel.options[i].selected = true;
Avatar billede henriklaursen Nybegynder
25. maj 2004 - 16:26 #3
roenving, det virker :-) takker..
lige en ting mere.

i min select box er der en ONCHANGE="manuselected(this);"
kan man få den til at "køre"

det som skal ske, er nemlig at man vælger noget i en select box 1, hvorefter den så tilpasser select 2's indhold.
Avatar billede henriklaursen Nybegynder
25. maj 2004 - 16:30 #4
den funktion jeg har ser således ud (PHP/MYSQL/JAVASCRIPT)
det kan være at man kan bygge ind, i denne, så de bliver selected fra starten.
----------
<?

$sQuery = "SELECT varegrupper.varegrp, varegenre.varegenre, varegrupper.id AS ManuID, varegenre.id AS ModelID FROM varegenre INNER JOIN varegrupper ON varegenre.varegrp = varegrupper.id ORDER BY varegrupper.varegrp, varegenre.varegenre";

$rsx = mysql_db_query($dbName, $sQuery);

If(mysql_num_rows>1)
{
    echo"No manufacturers.<BR>";
}
Else
{
  # write the manufacturers listbox...
  echo"<SELECT NAME=\"varegruppe\" SIZE=15 ONCHANGE=\"manuselected(this);\" style=\"width:100;\">";
  # write the entry code for the javascript...
  $sJavaScript = "function manuselected(elem){for (var i = document.f1.genre.options.length; i >= 0; i--){document.f1.genre.options[i] = null;";

  # loop through the recordset...
  while($row = mysql_fetch_array($rsx))
  {
    # is this a new manufacturer?
    If ($sLastManufacturer <> $row["varegrp"])
    {                           
      # if so, add an entry to the first listbox
      $sLastManufacturer = $row["varegrp"];
      echo"<OPTION VALUE='".$row["ManuID"]."'>". $sLastManufacturer . "</OPTION>";

      # and add a new section to the javascript...
      $sJavaScript = $sJavaScript . "}if (elem.options[elem.selectedIndex].value==".$row["ManuID"] ."){";
    }
   
    # and add a new model line to the javascript...
    $sJavaScript = $sJavaScript . "document.f1.genre.options[document.f1.genre.options.length] = new Option('" . $row["varegenre"] . "','" . $row["ModelID"] ."');";

  }
  # finish the manufacturer listbox...
  echo"</SELECT>";
  # create the models listbox...
  echo "<SELECT NAME=\"genre\" SIZE=15 style=\"width:300;\">";
  echo "<OPTION>Vælg varegruppe</OPTION>";
  echo "</SELECT>";
  # put the last line on the javascript...
  # and write it out...
  $sJavaScript = $sJavaScript . "}}";
  echo"<SCRIPT LANGUAGE=\"JavaScript\">";
  echo $sJavaScript;
 

 
  echo"</SCRIPT>";
}
?>
Avatar billede henriklaursen Nybegynder
25. maj 2004 - 16:32 #5
det bliver vist ikke noget problem at selecte i den første select box (altså i starten.) men det er i den anden select boks, jeg ikke helt ved hvad jeg evt. skulle gøre.
kan man sende noget med i funktionen "new option", der gør, at den er selected?
Avatar billede thomashove Nybegynder
25. maj 2004 - 16:34 #6
lidt inspiration... her vil select_2's selected index blive det samme som select_1's



<Select name="select_1" onChange="document.formnavn.select_2.selectedIndex=this.selectedIndex">
Avatar billede roenving Novice
25. maj 2004 - 22:01 #7
Kunne du ikke prøve at lægge den kode, som kommer ud af php-koden (Vis kilde i browseren !-)
Avatar billede henriklaursen Nybegynder
26. maj 2004 - 14:20 #8
her er koden..
.-------------

<form ACTION="#" NAME="f1" METHOD="get" >

<SELECT NAME="varegruppe" SIZE=15 ONCHANGE="manuselected(this);" style="width:100;">
    <OPTION VALUE='1'>Bøger</OPTION>
    <OPTION VALUE='3'>Film</OPTION>
    <OPTION VALUE='2'>Musik</OPTION>
</SELECT>

<SELECT NAME="genre" SIZE=15 style="width:300;">
    <OPTION>Vælg varegruppe</OPTION>
</SELECT>

<SCRIPT LANGUAGE="JavaScript">

function manuselected(elem)
{
    for (var i = document.f1.genre.options.length; i >= 0; i--){document.f1.genre.options[i] = null;}
   
    if (elem.options[elem.selectedIndex].value==1)
    {
        document.f1.genre.options[document.f1.genre.options.length] = new Option('Børnebøger','10');
        document.f1.genre.options[document.f1.genre.options.length] = new Option('Fagbøger','21');
        document.f1.genre.options[document.f1.genre.options.length] = new Option('Romaner','11');
        document.f1.genre.options[document.f1.genre.options.length] = new Option('Salmebøger','12');
    }
    if (elem.options[elem.selectedIndex].value==3)
    {
        document.f1.genre.options[document.f1.genre.options.length] = new Option('Action','13');
        document.f1.genre.options[document.f1.genre.options.length] = new Option('Komedie','15');
        document.f1.genre.options[document.f1.genre.options.length] = new Option('Passion','16');
        document.f1.genre.options[document.f1.genre.options.length] = new Option('Thriller','14');
    }
   
    if (elem.options[elem.selectedIndex].value==2)
    {
        document.f1.genre.options[document.f1.genre.options.length] = new Option('Blues','20');
        document.f1.genre.options[document.f1.genre.options.length] = new Option('Jazz','19');
        document.f1.genre.options[document.f1.genre.options.length] = new Option('Pop','18');
        document.f1.genre.options[document.f1.genre.options.length] = new Option('Rock','17');
    }
}
</SCRIPT>
<br>
<input type="submit">
</form>
Avatar billede roenving Novice
26. maj 2004 - 16:51 #9
new Option har åbenbart to parametre mere, som du kan benytte:

new Option('Salmebøger','12',1,1)

-- hvor de to sidste er hhv. defaultSelected og selected som booleans, altså:

new Option(text,value,defaultSelected,selected)

-- og så kan du jo sætte de værdier til det interessante efter noget i php-koden eller evt. i javascriptet ...
Avatar billede henriklaursen Nybegynder
27. maj 2004 - 08:03 #10
ah... GREAT !!!
det vil jeg lige prøve..
Findes der en online javascript reference manual, et sted?
synes mange gange jeg mangler det..
(kan virke rodet når man bare søger på google)
Avatar billede roenving Novice
27. maj 2004 - 11:05 #11
Deciderede manualer finder man netop ikke, men referencer:

http://devedge.netscape.com/library/manuals/2000/javascript/1.5/reference/
http://devedge.netscape.com/library/manuals/2000/javascript/1.3/reference/

Men Option-objektet er ikke nået helt ind i alle specifikationer, så der vil jeg tro, du skal finde den på www.msdn.microsoft.com hvor det sikkert er Jscript man skal lede efter, hvorfor har jeg ikke selv det link ?-)

-- men ellers er der en 2-3 bøger som kan anbefales, fordi de har en extensiv gennemgang, og jeg kan selvfølgelig kun lige komme i tanke om den jeg selv har lige nu, men hang on, så skal vi nok finde de andre titler !-)
Avatar billede henriklaursen Nybegynder
27. maj 2004 - 11:28 #12
det var til stor hjælp..
roenving - smider du et svar..
Avatar billede roenving Novice
27. maj 2004 - 11:50 #13
Velbekomme '-)
Avatar billede roenving Novice
27. maj 2004 - 11:50 #14
;O)
Avatar billede roenving Novice
27. maj 2004 - 12:18 #15
-- og tak for point ;~}
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