Avatar billede stoney Nybegynder
20. oktober 2004 - 13:30 Der er 17 kommentarer og
1 løsning

Kald forskellig function efter valg i listbox/dropdown

Jeg har en dropdown
Hvordan får jeg den til at kalde en function ud fra valuen
i min dropdown
Altså hvis 1 kald function1
Altså hvis 2 kald function2
etc....


<option value="0" selected>ikke spillet</option>
    <option value="1">1</option>
    <option value="2">X</option>
    <option value="3">2</option>
    <option value="4">1X</option>
    <option value="5">12</option>
    <option value="6">1X2</option>

På forhånd tak

Stoney
Avatar billede roenving Novice
20. oktober 2004 - 13:55 #1
F.eks.

<select name="kamp12" onchange="vaelgGardering(this,this.value);">
    <option value="0" selected>ikke spillet</option>
    <option value="1">1</option>
    <option value="2">X</option>
    <option value="3">2</option>
    <option value="4">1X</option>
    <option value="5">12</option>
    <option value="6">1X2</option>
</select>

-- hvor vaelgGardering så er en funktion, som sætter eller sletter tegnene for den aktuelle kamp !-)
Avatar billede stoney Nybegynder
20. oktober 2004 - 14:42 #2
Hej roenving

Den skal regne nogle odds ud alt efter hvad man vælger.
Formlen er forskellig alt efter hvad der bliver valgt.

Stoney
Avatar billede roenving Novice
20. oktober 2004 - 14:49 #3
Så må du enten:

-- i funktionen vaelgGardering lave dine forskellige funktioner ud fra værdien:

function vaelgGardering(elm){
  switch(elm.value){
    case '1':
      //der er valgt 1
      udFoerNoget(elm);
      break;
    case '2':
      //der er valgt 2
      udFoerNoget2(elm);
      break;
    ...
  }
}

-- eller angive en value, du kan bruge mere direkte ...
Avatar billede stoney Nybegynder
20. oktober 2004 - 15:25 #4
Det kan jeg ikke lige overskue.
Det virker godt nok på den "første" kamp.
antal kampe kan variere, derfor bruger jeg getelementbyid.
Formlerne er dog ikke helt på plads endnu.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
function beregn(num){
  switch(document.getElementById("select"+num).value){
    case '1':
      //der er valgt 1
      document.getElementById("odds"+num).value = (document.getElementById("odds1_"+num).value);
   
      break;
    case '2':
      //der er valgt 2
    document.getElementById("odds"+num).value = (document.getElementById("oddsx_"+num).value);
      break;
 
  }
}

</script>


<style type="text/css">
<!--
.sh {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    text-decoration: none;
}
-->
</style>
</head>

<body>
<form action="" method="post" name="form1" >
  <input name="home" type="text" class="sh" id="home" value="Hjemme hold">
  <input name="away" type="text" class="sh" id="away" value="Ude hold">
  <input name="odds1_1" type="text" class="sh" id="odds1_1" style="text-align:right" value="1,50" size="6">
  <input name="oddsx_1" type="text" class="sh" id="oddsx_1" style="text-align:right" value="2,20" size="6">
  <input name="odds2_1" type="text" class="sh" id="odds2_1" style="text-align:right" value="3,60" size="6">
  <select name="select1" class="sh" id="select1" onChange="beregn('1')">
    <option value="0" selected>ikke spillet</option>
    <option value="1">1</option>
    <option value="2">X</option>
    <option value="3">2</option>
    <option value="4">1X</option>
    <option value="5">12</option>
    <option value="6">1X2</option>
  </select>
  <input name="odds1" type="text" class="sh" id="odds1" style="text-align:right">
  <br>
  <input name="home2" type="text" class="sh" id="home2" value="Hjemme hold">
  <input name="away2" type="text" class="sh" id="away2" value="Ude hold">
  <input name="odds1_2" type="text" class="sh" id="odds1_2" style="text-align:right" value="1,50" size="6">
  <input name="oddsx_2" type="text" class="sh" id="oddsx_2" style="text-align:right" value="2,20" size="6">
  <input name="odds2_2" type="text" class="sh" id="odds2_2" style="text-align:right" value="3,60" size="6">
  <select name="select2" class="sh" onChange="beregn('2')">
    <option selected>ikke spillet</option>
    <option>1</option>
    <option>X</option>
    <option>2</option>
    <option>1X</option>
    <option>12</option>
    <option>1X2</option>
  </select>
  <input name="odds2" type="text" class="sh" id="odds2" style="text-align:right">
</form>

</body>
</html>


Stoney
Avatar billede roenving Novice
20. oktober 2004 - 15:40 #5
F.eks.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
function beregn(elm){
  num = elm.name.replace(/^.*(\d+)$/,"$1");
  switch(elm.value){
    case '0':
      //der er valgt ikke spillet
      document.getElementById("odds"+num).value = '';
      break;
    case '1':
      //der er valgt 1
      document.getElementById("odds"+num).value = document.getElementById("odds1_"+num).value;
      break;
    case '2':
      //der er valgt X
      document.getElementById("odds"+num).value = document.getElementById("oddsx_"+num).value;
      break;
    case '3':
      //der er valgt 2
      document.getElementById("odds"+num).value = document.getElementById("odds2_"+num).value;
      break;
    case '4':
      //der er valgt 1X -- her skal jo være en beregning af hvilke odds, det giver ...
      document.getElementById("odds"+num).value = document.getElementById("odds2_"+num).value;
      break;
 
  }
}

</script>


<style type="text/css">
<!--
.sh {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    text-decoration: none;
}
-->
</style>
</head>

<body>
<form action="" method="post" name="form1" >
  <input name="home" type="text" class="sh" id="home" value="Hjemme hold">
  <input name="away" type="text" class="sh" id="away" value="Ude hold">
  <input name="odds1_1" type="text" class="sh" id="odds1_1" style="text-align:right" value="1,50" size="6">
  <input name="oddsx_1" type="text" class="sh" id="oddsx_1" style="text-align:right" value="2,20" size="6">
  <input name="odds2_1" type="text" class="sh" id="odds2_1" style="text-align:right" value="3,60" size="6">
  <select name="select1" class="sh" id="select1" onChange="beregn(this)">
    <option value="0" selected>ikke spillet</option>
    <option value="1">1</option>
    <option value="2">X</option>
    <option value="3">2</option>
    <option value="4">1X</option>
    <option value="5">12</option>
    <option value="6">1X2</option>
  </select>
  <input name="odds1" type="text" class="sh" id="odds1" style="text-align:right">
  <br>
  <input name="home2" type="text" class="sh" id="home2" value="Hjemme hold">
  <input name="away2" type="text" class="sh" id="away2" value="Ude hold">
  <input name="odds1_2" type="text" class="sh" id="odds1_2" style="text-align:right" value="1,50" size="6">
  <input name="oddsx_2" type="text" class="sh" id="oddsx_2" style="text-align:right" value="2,20" size="6">
  <input name="odds2_2" type="text" class="sh" id="odds2_2" style="text-align:right" value="3,60" size="6">
  <select name="select2" class="sh" onChange="beregn(this)">
    <option value="0" selected>ikke spillet</option>
    <option value="1">1</option>
    <option value="2">X</option>
    <option value="3">2</option>
    <option value="4">1X</option>
    <option value="5">12</option>
    <option value="6">1X2</option>
  </select>
  <input name="odds2" type="text" class="sh" id="odds2" style="text-align:right">
</form>

</body>
</html>

-- men der mangler jo lige den formel, som sætter odds på garderinger, har du den ?-)
Avatar billede stoney Nybegynder
20. oktober 2004 - 15:50 #6
Du er den ondelyneme for hård roenving.
Mange tak for hjælpen.

Her er formlerne

1X:

(1/(1/odds1+(1/oddsx)))

12:

(1/(1/odds1+(1/odds2)))

X2:

(1/(1/oddsX+(1/odds2)))

1X2:

(1/(1/odds1+(1/oddsX)+(1/odds2)))

Lægger du et svar

Stoney
Avatar billede roenving Novice
20. oktober 2004 - 16:00 #7
Altså så:

    case '4':
      //der er valgt 1X
      val1 = +document.getElementById("odds1_"+num).value.replace(/,/,".");
      val2 = +document.getElementById("oddsx_"+num).value.replace(/,/,".");
      odds = 1/(1/val1+1/val2);
      document.getElementById("odds"+num).value = (""+odds).replace(/\./,",");
      break;

Velbekomme !-)
Avatar billede roenving Novice
20. oktober 2004 - 16:04 #8
Tak for point ;~}
Avatar billede stoney Nybegynder
21. oktober 2004 - 12:32 #9
Hej roenving

Kan du lave en function/tilrette så den ganger alle
document.getElementById("odds"+num).value med hinanden
altså odds1 * odds2 osv.

Hvis du vil have flere point siger du bare til.

Stoney
Avatar billede roenving Novice
21. oktober 2004 - 14:00 #10
Har du et fast antal kampe ?-)

-- nå, ligegyldigt, her er en !-)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
function afrund(tal){
  if(isNaN(tal))return "0,00";
  tal = ""+(Math.round(tal*100))/100;
  punktum = tal.indexOf(".");
  if (punktum==-1)return tal+".00";
  if (tal.length-punktum==3)return tal;
  else return tal+"0";
}
function beregn(elm){
  num = elm.name.replace(/^.*(\d+)$/,"$1");
  switch(elm.value){
    case '0':
      //der er valgt ikke spillet
      document.getElementById("odds"+num).value = '';
      break;
    case '1':
      //der er valgt 1
      document.getElementById("odds"+num).value = document.getElementById("odds1_"+num).value;
      break;
    case '2':
      //der er valgt X
      document.getElementById("odds"+num).value = document.getElementById("oddsx_"+num).value;
      break;
    case '3':
      //der er valgt 2
      document.getElementById("odds"+num).value = document.getElementById("odds2_"+num).value;
      break;
    case '4':
      //der er valgt 1X
      val1 = +document.getElementById("odds1_"+num).value.replace(/,/,".");
      val2 = +document.getElementById("oddsx_"+num).value.replace(/,/,".");
      odds = 1/(1/val1+1/val2);
      document.getElementById("odds"+num).value = afrund(odds).replace(/\./,",");
      break;
  }
  var n = Todds = 1;
  while(document.getElementById("odds"+n)){
    if(document.getElementById("odds"+n).value.match(/\d/))
      Todds *= +document.getElementById("odds"+n).value.replace(/,/,".");
    n++;
  }
  document.getElementById("Todds").value = afrund(Todds).replace(/\./,",");
}

</script>


<style type="text/css">
<!--
.sh {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    text-decoration: none;
}
-->
</style>
</head>

<body>
<form action="" method="post" name="form1" >
  <input name="home" type="text" class="sh" id="home" value="Hjemme hold">
  <input name="away" type="text" class="sh" id="away" value="Ude hold">
  <input name="odds1_1" type="text" class="sh" id="odds1_1" style="text-align:right" value="1,50" size="6">
  <input name="oddsx_1" type="text" class="sh" id="oddsx_1" style="text-align:right" value="2,20" size="6">
  <input name="odds2_1" type="text" class="sh" id="odds2_1" style="text-align:right" value="3,60" size="6">
  <select name="select1" class="sh" id="select1" onChange="beregn(this)">
    <option value="0" selected>ikke spillet</option>
    <option value="1">1</option>
    <option value="2">X</option>
    <option value="3">2</option>
    <option value="4">1X</option>
    <option value="5">12</option>
    <option value="6">1X2</option>
  </select>
  <input name="odds1" type="text" class="sh" id="odds1" style="text-align:right">
  <br>
  <input name="home2" type="text" class="sh" id="home2" value="Hjemme hold">
  <input name="away2" type="text" class="sh" id="away2" value="Ude hold">
  <input name="odds1_2" type="text" class="sh" id="odds1_2" style="text-align:right" value="1,50" size="6">
  <input name="oddsx_2" type="text" class="sh" id="oddsx_2" style="text-align:right" value="2,20" size="6">
  <input name="odds2_2" type="text" class="sh" id="odds2_2" style="text-align:right" value="3,60" size="6">
  <select name="select2" class="sh" onChange="beregn(this)">
    <option value="0" selected>ikke spillet</option>
    <option value="1">1</option>
    <option value="2">X</option>
    <option value="3">2</option>
    <option value="4">1X</option>
    <option value="5">12</option>
    <option value="6">1X2</option>
  </select>
  <input name="odds2" type="text" class="sh" id="odds2" style="text-align:right">
  <br><br>
  <input name="Todds" type="text" class="sh" id="Todds2" style="text-align:right" disabled readonly>
</form>

</body>
</html>
Avatar billede stoney Nybegynder
21. oktober 2004 - 14:10 #11
Vil det sige den virker på variabelt antal kampe ? (jeg fatter nada af javascript)

Sig lige hvad du skal have for det ?

Stoney
Avatar billede roenving Novice
21. oktober 2004 - 14:28 #12
Ja, den skulle være ligeglad med hvor mange kampe der er, og den er også ligeglad med om de er udfyldt i rækkefølge, den finder de felter, som hedder odds1, odds2, oddsX i rækkefølge indtil der ikke er flere felter, og medregner dem, som indeholder tal ...

Men du må altså ikke have huller, for den stopper første gang, den ikke finder et element, så hvis du har f.eks. 10 kampe _skal_ de være nummereret fra 1 til 10 !-)

-- og hvis du vil give point, skal du bare kigge på forslagene, når du opretter nyt spørgsmål, jeg syntes ikke det var svært, men jeg skulle da lige pille i 5-10 minutter !-)
Avatar billede stoney Nybegynder
21. oktober 2004 - 14:37 #13
Jeg har tænkt mig at hente kampene fra tips.dk (den lange) automatisk,
derfor variabelt antal kampe.
mange tak for hjælpen.
Jeg opretter et spørgsmål til dig med point.

Stoney
Avatar billede stoney Nybegynder
22. oktober 2004 - 09:48 #14
Hej roenving
Det virker kun på kamp 1-9
Jeg har virkelig checket det javascript og kan ikke se der
skulle være noget galt. Er det en begrænsning i javascript ?
http://www.tradestone.dk/denlange.htm
Det bliver generet automatisk, så kamp 1-9 og 10 - ~ bliver lavet
på samme måde.

Stoney
Avatar billede roenving Novice
22. oktober 2004 - 14:54 #15
Første linje i beregningen skal have et spørgsmålstegn ekstra:

  num = elm.name.replace(/^.*?(\d+)$/,"$1");

-- jeg mente ellers at have brugt denne type udskiftning uden problemer før, men der skulle altså lige en stopper på !-)
Avatar billede stoney Nybegynder
22. oktober 2004 - 16:31 #16
Kanon !!

Endnu engang tak for hjælpen.
Hvad betyder det der står i parantesen
num = elm.name.replace(/^.*?(\d+)$/,"$1");


Stoney
Avatar billede roenving Novice
22. oktober 2004 - 16:39 #17
.replace = udskift det, som matcher første parameter med den anden, her med en regexp (/^.*?(\d+)$/), hvis gruppe (\d+) står som parameter 1 ($1) i den anden parameter: "$1"

Regexp'en tolkes sådan:

// er start og slut på teksten (ligesom du bruger "" i tekststrenge !-)

^$ betyder fra strengens absolutte start til dens absolutte slutning

. betyder et hvilketsomhelst tegn
* i et eller andet ligegyldigt antal
? men kun, hvis ikke det næste tegn kan findes

\d betyder tal
+ med et eller flere cifre,

og () er altså en gruppering, som afleverer noget, vi kan bruge i $1 !-)
Avatar billede roenving Novice
22. oktober 2004 - 16:41 #18
-- og jeg kom i tanke om forskellen fra den jeg ellers bruger, så den kan faktisk også bruges:

num = elm.name.replace(/(\d+)$/,"$1");

-- hvor det så kun betyder tal, som afslutter strengen !-)
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