Avatar billede jokeren25 Nybegynder
29. december 2006 - 13:19 Der er 10 kommentarer og
1 løsning

Lille regnestykke

Hej experter,

jeg har et regnestykke jeg gerne vil have noget hjælp med. Jeg er i gang med at lave et trade-in program og derfor skal jeg lave et lille regnestykke. Mit problem er at jeg ikke ved præsist hvordan jeg skal få data ud af en selectbox.

Det jeg gerne vil opnå er at jeg tager data fra ports feltet og ganger det med 5 hvis det et ES produkt og med 8 hvis det er et GS produkt, så kunden kan se hvor meget han kan få tilbage i Euro. Resultatet skal derefter skrives ud i en text boxen.

På forhånd tak.

Her er min forløbige kode:

Numbers of ports returned: <br />
<select name="ports" onChange="show(this)">
<option value="12" >12</option>
<option value="16">16</option>
<option value="24">24</option>
<option value="48">48</option>
</select>
   
<br>
Sold product: <br>

<select name="sold_product" >
<option value="ES" >ES</option>
<option value="GS">GS</option>
</select>
   
<div id="product_info" style="display:none;">&nbsp;</div>

 
<script type="text/javascript">

function show(sel) {

var mytxt = new Array();
mytxt[0] = "";
mytxt[1] = "<input type='text' size='30' value='ports * VALUE of ES/GS' name='euro'>";

var elm = sel.options;
var target = document.getElementById('product_info');
  for(i=0,elmlen=elm.length;i<elmlen;i++){
    if(elm[0].selected){
      target.style.display = "none";
    }
    else if(elm[i].selected){
      target.style.display = "block";
      target.innerHTML = mytxt[i];
    }
  }
}
</script>
Avatar billede windcape Praktikant
29. december 2006 - 13:35 #1
Ok, først vil jeg ændre

<select name="sold_product" >
  <option value="ES">ES</option>
  <option value="GS">GS</option>
</select>

til

<select name="sold_product" >
  <option value="5">ES</option>
  <option value="8">GS</option>
</select>

og

<select name="ports" onChange="show(this)">

til

<select name="ports" id="ports" onChange="show(this)">


Og så bruge følgende kode:

var portsSelector = document.getElementById('ports');
var ports = portsSelector.options[portsSelector.selectedIndex].value;
    ports = parseInt(ports); // konvertere til tal

var productSelector = document.getElementById('sold_product');
var product = productSelector.options[productSelector.selectedIndex].value;
    product = parseInt(product); // konvertere til tal
   
var result = ports*product;

var target = document.getElementById('product_info');
    target.innerHTML = result;

// -------------------------------------------------

Håber du kan bruge det til noget :-)
Avatar billede jokeren25 Nybegynder
29. december 2006 - 13:51 #2
Hej Windcape, mange tak for hjælpen. Nu har jeg rettet scriptet til, som du beskriver men jeg den skriver ikke noget ud i browseren og jeg får ingen fejlmeddelser, kan du hjælpe mig?

Således ser min kode ud:

Numbers of ports returned: <br />

<select name="ports" id="ports" onChange="show(this)">
<option value="12" >12</option>
<option value="16">16</option>
<option value="24">24</option>
<option value="48">48</option>
</select>

Sold product: <br>
<select name="sold_product" >
<option value="5">ES</option>
<option value="8">GS</option>
</select>

<div id="product_info" style="display:none;">&nbsp;</div>

<script type="text/javascript">

function show(sel) {
var portsSelector = document.getElementById('ports');
var ports = portsSelector.options[portsSelector.selectedIndex].value;
ports = parseInt(ports); // konvertere til tal

var productSelector = document.getElementById('sold_product');
var product = productSelector.options[productSelector.selectedIndex].value;
product = parseInt(product); // konvertere til tal
   
var result = ports*product;

var target = document.getElementById('product_info');
    target.innerHTML = result;
}

</script>
Avatar billede windcape Praktikant
29. december 2006 - 13:54 #3
siden din <div> stadig er display:none skal du lige tilføje en linje :-)

var target = document.getElementById('product_info');
    target.style.display = 'block';
    target.innerHTML = result;

Dette burde gøre tricket.
Avatar billede jokeren25 Nybegynder
29. december 2006 - 14:03 #4
Tusind tak for hjælpen!!

Svar og der er points.
Avatar billede jokeren25 Nybegynder
29. december 2006 - 14:14 #5
Sidste spørgsmål - ved du hvordan jeg skriver resultatet ud en text box ala det her?
 
target.innerHTML = "<input type='text' size='30' value=' result ' name='euro'>";
Avatar billede windcape Praktikant
29. december 2006 - 14:40 #6
Ændre din HTML til følgende:

<div id="product_info" style="display:none;">
  <input type="text" id="euro" size="30" name="euro">
</div>

og så lave dette JS om:

var target = document.getElementById('product_info');
    target.style.display = 'block';
    target.innerHTML = result;

til

var target = document.getElementById('product_info');
    target.style.display = 'block';
var euro = document.getElementById('euro');
    euro.value = result;
Avatar billede windcape Praktikant
29. december 2006 - 14:41 #7
du kan også bruge DOM vejen, den er dog lidt mere kompliceret ;)

var target = document.getElementById('product_info');
    target.style.display = 'block';
var euro = document.createElement('input');
    euro.value = result;
    target.appendChild(euro);

og så skal der ikke ændres noget i din html.
Avatar billede jokeren25 Nybegynder
29. december 2006 - 14:44 #8
Endnu en gang mange tak, hav et godt nytår...
Avatar billede windcape Praktikant
29. december 2006 - 14:50 #9
I lige måde <:o)-
Avatar billede olebole Juniormester
29. december 2006 - 15:04 #10
<ole>

windcape >> Du kan ikke bruge DOM på input-elementer i IE (ikke på dén måde i hvertfald):
    http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/createelement.asp

/mvh
</bole>
Avatar billede windcape Praktikant
29. december 2006 - 16:02 #11
joo, kan jeg nu godt, sålænge at jeg holder min til <input type="text"> og kun bruger dens value property. Det plejer ihvertfald at virke i min IE6.

Men vidste det godt :-) Microsofts implementering er rigtig rigtig grim.
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