Avatar billede wizzdk Nybegynder
18. februar 2004 - 08:36 Der er 7 kommentarer og
2 løsninger

Beregning fra checkboxes.

Hej eksperter. :p
Bare lige for at få det på det rene: Jeg er nybegynder til JS, så bær' over med mig. ;)

Jeg har denneher side, hvor jeg gerne vil have lavet nogen beregninger ud fra nogen checkboxes. Det skal være muligt at vælge _1_ checkbox. Grunden til at jeg ikke vælger at bruge radio-buttons er at man ikke _skal_ vælge, men kan godt undlade. - Og man kan jo ikke de-selecte radio-buttons. :(

Siden skal bruges til et (bræt)-spil med en ret omfattende økonomi-del.. men der regnes i "credits", så der skal ikke bruges decimal-tal osv osv, det er udelukkende heltal.

Her er den stump kode jeg har indtil videre, jeg har kigget på flere posts her under JavaScript, så det kan godt være der sidder nogen derude (*host host* roenving *host*) der kan genkende deres kode. ;)

<script language="javascript" type="text/javascript">
function calc(n){
var valg=document.minForm.elements['valg'+n];
var pris=document.minForm.elements['pris'+n];
var ialt=document.minForm.elements['ialt'+n];
If(valgt.checked=true){
    ialt.value==(pris.value);
    }
else ialt.value=0;
}
</script>
<form name='minForm'>
<TABLE BORDER='1'>
<TR><TD>Technology:</TD><TD>Cost:</TD><TD>Buy:</TD><TD>Price:</TD></TR>
<TR><TD>Deep Space Cannon</TD>
<TD><INPUT NAME='pris1' TYPE='text' VALUE='30'></TD>
<TD><INPUT TYPE='checkbox' NAME='valg1' onblur='calc(1)'></TD>
<TD><INPUT disabled TYPE='text' NAME='ialt1' STYLE='background:#999999' SIZE=5></TD></TR>

<TR><TD>Enviro Compensators</TD>
<TD><INPUT NAME='pris2' TYPE='text' VALUE='25'></TD>
<TD><INPUT TYPE='checkbox' NAME='valg2' onblur='calc(2)'></TD>
<TD><INPUT disabled TYPE='text' NAME='ialt2' STYLE='background:#999999' SIZE=5></TD></TR>

<TR><TD>XRD Transporter</TD>
<TD><INPUT NAME='pris3' TYPE='text' VALUE='20'></TD>
<TD><INPUT TYPE='checkbox' NAME='valg3' onblur='calc(2)'></TD>
<TD><INPUT disabled TYPE='text' NAME='ialt3' STYLE='background:#999999' SIZE=5></TD></TR>

</TABLE>
</form>
Avatar billede mm12010 Nybegynder
18. februar 2004 - 08:55 #1
jeg er ikke helt sikker på jeg forstået det rigtigt, men prøv sådan:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Beregning fra checkboxes.</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript">
function calc(n){
  var valg=document.minForm.elements['valg'+n];
  var pris=document.minForm.elements['pris'+n];
  var ialt=document.minForm.elements['ialt'+n];
  if(valg.checked==true){
    ialt.value=pris.value;
    for(i=1;i<=3;i++){
      if(i!=n){
        document.minForm.elements['valg'+i].checked=false;
        document.minForm.elements['ialt'+i].value='';
        }
      }
    }
  else{
    ialt.value='';
    }
  }
</script>
</head>
<body>
<form name='minForm'>
<TABLE BORDER='1'>
<TR><TD>Technology:</TD><TD>Cost:</TD><TD>Buy:</TD><TD>Price:</TD></TR>
<TR><TD>Deep Space Cannon</TD>
<TD><INPUT NAME='pris1' TYPE='text' VALUE='30'></TD>
<TD><INPUT TYPE='checkbox' NAME='valg1' onclick='calc("1")'></TD>
<TD><INPUT disabled TYPE='text' NAME='ialt1' STYLE='background:#999999' SIZE=5></TD></TR>
<TR><TD>Enviro Compensators</TD>
<TD><INPUT NAME='pris2' TYPE='text' VALUE='25'></TD>
<TD><INPUT TYPE='checkbox' NAME='valg2' onclick='calc("2")'></TD>
<TD><INPUT disabled TYPE='text' NAME='ialt2' STYLE='background:#999999' SIZE=5></TD></TR>
<TR><TD>XRD Transporter</TD>
<TD><INPUT NAME='pris3' TYPE='text' VALUE='20'></TD>
<TD><INPUT TYPE='checkbox' NAME='valg3' onclick='calc("3")'></TD>
<TD><INPUT disabled TYPE='text' NAME='ialt3' STYLE='background:#999999' SIZE=5></TD></TR>
</TABLE>
</form>
</body>
</html>
Avatar billede nikolajdu Nybegynder
18. februar 2004 - 08:55 #2
Nu ved jeg ikke hvorfra du havde scriptet, men der er ihvertilfald et par småfejl.

If(valgt.checked=true){
    ialt.value==(pris.value);


Stort If
valgt.checked=true // er et tjeck  der skal dobbelt ==
ialt.value==(pris.value) // Sætter en variabel der skal kun ét =

Anyway :

<script language="javascript" type="text/javascript">
function calc(n){

f = document.minForm;
valgt=f.elements['valg'+n];
pris=f.elements['pris'+n];
ialt=f.elements['ialt'+n];

if(valgt.checked==true){
    ialt.value=(pris.value);
    f.sum.value = parseInt(f.sum.value)+parseInt(pris.value);
    }else{
    ialt.value=0;
    f.sum.value = f.sum.value-pris.value;
    }
}
</script>

Og så udbyggede jeg lige din form med en sum - Det virkede logisk :))

<TR><TD>Sum</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD><INPUT disabled TYPE='text' NAME='sum' STYLE='background:#999999' SIZE=5 value='0'></TD></TR>
Avatar billede wizzdk Nybegynder
18. februar 2004 - 09:13 #3
Hold da helt op! Jeg havde godt nok ikke regnet med at svaret kom _så_ prompte, og så ovenikøbet fra 2 sider.

nikolajdu; Tak fordi du lige gad opklare nogen ting for mig (havde selv undret mig over forskellen på "=" og "==") Der er dog en fejl i din kode, når man når til item nummer 3, så regner den -25, og ligger det til summen. Tak for sum-feltet, det ville jeg alligevel ha' lavet. ;)

mm12010; Lækkert med den lille funktion der fjerner hak fra de andre checkboxes hvis man vælger en ny. I øvrigt virker din kode uden ballade. :) Den regner som den skal.

Jeg vil gerne give jer hver 15 point, hvis det er i orden? mm12010 fordi det bare virker som det skal, nikolajdu fordi han også gjorde et godt forsøg og jeg samtidig lærte lidt af det. ;)
Smid no'en svar! :D
Avatar billede jguru Nybegynder
18. februar 2004 - 09:15 #4
Blot til info: Der er lige et godt eksempel på formsudregning her:
http://www.phoenixv.dk/exp/avanc_form.html
mvh
Avatar billede mm12010 Nybegynder
18. februar 2004 - 09:18 #5
helt fint med mig !-)
Avatar billede nikolajdu Nybegynder
18. februar 2004 - 09:30 #6
Jeg forstår ikke hvor du får fejl - Det virker tilsyneladende fint hos mig.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Beregning fra checkboxes.</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript">
function calc(n){

f = document.minForm;
valgt=f.elements['valg'+n];
pris=f.elements['pris'+n];
ialt=f.elements['ialt'+n];

if(valgt.checked==true){
    ialt.value=(pris.value);
    f.sum.value = parseInt(f.sum.value)+parseInt(pris.value);
    }else{
    ialt.value=0;
    f.sum.value = f.sum.value-pris.value;
    }
}
</script>
</head>
<body>
<form name='minForm'>
<TABLE BORDER='1'>
<TR><TD>Technology:</TD><TD>Cost:</TD><TD>Buy:</TD><TD>Price:</TD></TR>
<TR><TD>Deep Space Cannon</TD>
<TD><INPUT NAME='pris1' TYPE='text' VALUE='30'></TD>
<TD><INPUT TYPE='checkbox' NAME='valg1' onclick='calc("1")'></TD>
<TD><INPUT disabled TYPE='text' NAME='ialt1' STYLE='background:#999999' SIZE=5></TD></TR>
<TR><TD>Enviro Compensators</TD>
<TD><INPUT NAME='pris2' TYPE='text' VALUE='25'></TD>
<TD><INPUT TYPE='checkbox' NAME='valg2' onclick='calc("2")'></TD>
<TD><INPUT disabled TYPE='text' NAME='ialt2' STYLE='background:#999999' SIZE=5></TD></TR>
<TR><TD>XRD Transporter</TD>
<TD><INPUT NAME='pris3' TYPE='text' VALUE='20'></TD>
<TD><INPUT TYPE='checkbox' NAME='valg3' onclick='calc("3")'></TD>
<TD><INPUT disabled TYPE='text' NAME='ialt3' STYLE='background:#999999' SIZE=5></TD></TR>
<TR><TD>Sum</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD><INPUT disabled TYPE='text' NAME='sum' STYLE='background:#999999' SIZE=5 value='0'></TD></TR>
</TABLE>
</form>
</body>
</html>

/Nikolaj
Avatar billede nikolajdu Nybegynder
18. februar 2004 - 09:49 #7
tak for point anyway :))
Avatar billede wizzdk Nybegynder
18. februar 2004 - 09:49 #8
Mange tak for hjælpen. :D
Avatar billede mm12010 Nybegynder
18. februar 2004 - 10:09 #9
selv tak :o)
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