Avatar billede webbe Nybegynder
17. maj 2001 - 09:24 Der er 22 kommentarer og
2 løsninger

Sammenlægning af funktioner!

Hejsa!

Jeg har en lang række funktioner i javascript der løbende laver udregninger - deriblandt nogle totaler.

Er det muligt at addere to funktioner (totaler) uden at skulle definere en lang række variabler først??
Og hvordan gør man det så??

Et eksempel kunne være fortjeneste på salg (er udregnet ved at sige omsætning minus en række udgifter) lagt sammen med fortjenesten på leje (udregnet på samme måde) - disse to totaler skal tilsammen give den samlede fortjeneste i et tredje felt!

Håber der er nogen der vil hjælpe (flere point kan tildeles (op til 100)).
Avatar billede erikjacobsen Ekspert
17. maj 2001 - 09:33 #1
Du mener vel ikke bare

  document.dinform.ditfelt.value=fortjeneste()+leje()+moms()-rabat();

eller hvad det nu skal være?
Avatar billede webbe Nybegynder
17. maj 2001 - 09:36 #2
Hmmm - ved jeg egentlig ikke!

Jeg har følgende funktioner:

function gross1() {
    var turn;
    var roy;
    var stock;
    var mark_ex;
    var mark_in;
   
    turn = parseInt(document.form1.turn_real1.value);
    roy = parseInt(document.form1.royal_real1.value);
    stock = parseInt(document.form1.stock_real1.value);
    mark_ex = parseInt(document.form1.Ex_real1.value);
    mark_in = parseInt(document.form1.In_real1.value);
   
    gross = turn - roy - stock - mark_ex - mark_in;
   
    document.form1.gross_real1.value = gross;
    }

denne function skal adderes med denne function:

function gross5() {
    var turn;
    var roy;
    var stock;
    var mark_ex;
    var mark_in;
   
    turn = parseInt(document.form1.turn_real1a.value);
    roy = parseInt(document.form1.royal_real1a.value);
    stock = parseInt(document.form1.stock_real1a.value);
    mark_ex = parseInt(document.form1.markex_real1a.value);
    mark_in = parseInt(document.form1.markin_real1a.value);
   
    gross = turn - roy - stock - mark_ex - mark_in;
   
    document.form1.gross_real1a.value = gross;
    }


I hvert fald hvis det er muligt!
Avatar billede jakoba Nybegynder
17. maj 2001 - 09:38 #3
Ja da. en funktion der returnerer en værdi kan bruges i et regnestykke præcis ligesom en variabel.

<script language=\'javascript\'>

function sinA ( radA ) {
  return Math.sin( radA +1 );
};

function cosA ( radA ) {
  return Math.cos( radA +1 );
};

alert ( \"dette skulle gerne give 1 : \" + Math.sqrt( sinA(2)*sinA(2) + cosA(2)*cosA(2) ) );

</script>

mvh JakobA
Avatar billede erikjacobsen Ekspert
17. maj 2001 - 09:39 #4
Nemlig jakoba. Lav funktioner, der laver beregninger, men som ikke rører
ved formens indhold. Så kan du nemlig bruge dem til flere ting!
Avatar billede webbe Nybegynder
17. maj 2001 - 09:43 #5
jakoba:

Det eksempel fattede jeg ikke en bønne af!!! *LOL*

Kan du ikke prøve at lave det ud fra de to funktioner jeg har skrevet ovenfor??? *S*
Avatar billede erikjacobsen Ekspert
17. maj 2001 - 09:56 #6
function gross1() {
var turn;
var roy;
var stock;
var mark_ex;
var mark_in;

turn = parseInt(document.form1.turn_real1.value);
roy = parseInt(document.form1.royal_real1.value);
stock = parseInt(document.form1.stock_real1.value);
mark_ex = parseInt(document.form1.Ex_real1.value);
mark_in = parseInt(document.form1.In_real1.value);

gross = turn - roy - stock - mark_ex - mark_in;

return gross;
//document.form1.gross_real1.value = gross;
}


function gross5() {
var turn;
var roy;
var stock;
var mark_ex;
var mark_in;

turn = parseInt(document.form1.turn_real1a.value);
roy = parseInt(document.form1.royal_real1a.value);
stock = parseInt(document.form1.stock_real1a.value);
mark_ex = parseInt(document.form1.markex_real1a.value);
mark_in = parseInt(document.form1.markin_real1a.value);

gross = turn - roy - stock - mark_ex - mark_in;

return gross()
//document.form1.gross_real1a.value = gross;
}

document.form1.gross_whatever.value=gross5()+gross1();
Avatar billede erikjacobsen Ekspert
17. maj 2001 - 09:57 #7
Uuuuuuuuuuups. Den sidste  return gross() skal være

  return gross;
Avatar billede webbe Nybegynder
17. maj 2001 - 10:05 #8
erik:

Jamen hvis jeg sætter // foran så kan den vel ikke ikke finde ud af hvor den skal skrive den første total???
Avatar billede erikjacobsen Ekspert
17. maj 2001 - 10:13 #9
Ah, skal den gøre begge dele??

Så kan du jo:

  document.form1.gross_real1a.value = gross;
  return gross;

Avatar billede webbe Nybegynder
17. maj 2001 - 10:16 #10
Ja - det fandt jeg ud af, men den vil ikke vise den samlede fortjeneste i det tredje felt!!!

Normalt skal man jo i feltet angive hvilken function der skal vises, men det ser jo ikke ud til at det er tilfældet her!!??

Hvordan får jeg det vist i det sidste felt???

Avatar billede webbe Nybegynder
17. maj 2001 - 10:16 #11
Kan man ikke samle de to første functions i en tredje function?
Avatar billede erikjacobsen Ekspert
17. maj 2001 - 10:37 #12
Vis os lige noget kode....
Avatar billede webbe Nybegynder
17. maj 2001 - 10:46 #13
Avatar billede erikjacobsen Ekspert
17. maj 2001 - 11:22 #14
ok - den eneste forskel på dine \"gross..\" funktioner er om de
skal aflæse xxxx_real1, xxxx_budg1, osv. Jo, den kan du tage
med som parameter til én gross-funktion, så du ikke behøver
have så mange. Er det korrekt opfattet?
Avatar billede webbe Nybegynder
17. maj 2001 - 11:31 #15
Ja - det er  netop den eneste forskel!
Avatar billede erikjacobsen Ekspert
17. maj 2001 - 12:24 #16
Jeg tager lige en enkelt:

function grossx(what) {
var turn;
var roy;
var stock;
var mark_ex;
var mark_in;
       
turn = parseInt(document.form1.elements[\"turn_\"+what].value);
roy = parseInt(document.form1.elements[\"royal_real2\"+what].value);
stock = parseInt(document.form1.elements[\"stock_real2\"+what].value);
mark_ex = parseInt(document.form1.elements[\"Ex_real2\"+what].value);
mark_in = parseInt(document.form1.elements[\"In_real2\"+what].value);
       
gross = turn - roy - stock - mark_ex - mark_in;
       
document.form1.gross_real2.value = gross;
}

og så kalde den med

  grossx(\"real2\");
Avatar billede erikjacobsen Ekspert
17. maj 2001 - 12:25 #17
Øh, der er et par _real2 for meget i 4 af linierne. Kig på linien med turn= ... for
den er korrekt
Avatar billede webbe Nybegynder
17. maj 2001 - 12:32 #18
I hvilken af funktionerne????
Avatar billede erikjacobsen Ekspert
17. maj 2001 - 12:42 #19
I min:

function grossx(what) {
var turn;
var roy;
var stock;
var mark_ex;
var mark_in;
                           
turn = parseInt(document.form1.elements[\"turn_\"+what].value);
roy = parseInt(document.form1.elements[\"royal_\"+what].value);
stock = parseInt(document.form1.elements[\"stock_\"+what].value);
mark_ex = parseInt(document.form1.elements[\"Ex_\"+what].value);
mark_in = parseInt(document.form1.elements[\"In_\"+what].value);
                             
gross = turn - roy - stock - mark_ex - mark_in;
                             
document.form1.gross_real2.value = gross;
}
Avatar billede webbe Nybegynder
17. maj 2001 - 12:46 #20
Det forstår jeg ikke!!!?????

De indeholder vel kun de felter der skal bruges til udregningen!!??
Avatar billede erikjacobsen Ekspert
18. maj 2001 - 12:01 #21
Øhm, jeg tror ikke vi forstår hinanden .... kan du præcisere hvad
du vil vide?

Sidste linie skulle være:

  document.form1.elements[\"gross\"+what].value = gross;
Avatar billede webbe Nybegynder
18. maj 2001 - 12:21 #22
Jamen - det er der da også!!!

Jeg kan ikke se hvad der skulle være galt!!??
Det er derfor jeg er forvirret!!!

Den sidste linie (som jeg forstår det) angiver jo hvor den skal skrive resultatet af min udregning - er det ikke korrekt!!??

Det mener jeg også mine funktioner gør nu!
Avatar billede erikjacobsen Ekspert
18. maj 2001 - 12:59 #23
oooog, så mangler der lige en

  return gross;

som sidste linie i funktionen.
Avatar billede webbe Nybegynder
18. maj 2001 - 13:05 #24
Ja - på de fleste af dem.....men vil godt lige have den første til at virke før jeg laver samme nummer på resten! *S*

Det vil sige, at det er gross1() og gross5(), der skal være return gross på, men skal der også være det på grosst1()????
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