Avatar billede webbe Nybegynder
22. februar 2001 - 08:51 Der er 15 kommentarer og
2 løsninger

Totaler til udregning!?

Hejsa!

Kan man i javascript bruge allerede udregnede resultater til udregning af et tredje resultat???

Jeg har fx.

1: en total omsætning der regnes ud som ekstern+intern omsætning

2: et resultat der er den totale omsætning-diverse omkostninger

3: en udregning der viser hvor mange procent resultatet udgør af den totale omsætning.

De to første fungerer fint, men jeg kan ikke få mit script til at udregne den sidste, men der bliver heller ikke meldt om fejl når jeg kører scriptet!

Er der nogen der kan hjælpe?
Avatar billede el_gnu Nybegynder
22. februar 2001 - 09:18 #1
prøv at vise koden til de første trin
Avatar billede webbe Nybegynder
22. februar 2001 - 09:27 #2
1: Total omsætning -

function total1() {
    var tal1;
    var tal2;
   
    tal1 = parseInt(document.report.ekstern_real1.value);
    tal2 = parseInt(document.report.intern_real1.value);
   
    document.report.total_real1.value = tal1 + tal2;
    }

2: Resultat -

function res1() {
    var tal17;
    var tal18;
    var tal19;
    var tal20;
    var tal21;
    var tal22;
    var tal23;
    var tal24;
    var tal25;
   
    tal17 = parseInt(document.report.ekstern_real1.value);
    tal18 = parseInt(document.report.intern_real1.value);
    tal19 = parseInt(document.report.royalty_real1.value);
    tal20 = parseInt(document.report.varekoebe_real1.value);
    tal21 = parseInt(document.report.varekoebi_real1.value);
    tal22 = parseInt(document.report.marketing_real1.value);
    tal23 = parseInt(document.report.andre_real1.value);
    tal24 = parseInt(document.report.personale_real1.value);
    tal25 = parseInt(document.report.afskrivninger_real1.value);
   
    document.report.resultat_real1.value = (tal17 + tal18) - tal19 - tal20 - tal21 - tal22 - tal23 - tal24 - tal25;
    }

3: Procentdel -

??????
Avatar billede el_gnu Nybegynder
22. februar 2001 - 09:41 #3
3: Procentdel -

function pro() {
  var total;
  var resultat;

  total = parseInt(document.report.total_real1.value);
  resultat = parseInt(document.report.resultat_real1.value);

  document.report.procent_real1.value = (resultat/total) * 100;
}

Her antager jeg at du har et felt i din form (report) der hedder procent_real1.
Avatar billede webbe Nybegynder
22. februar 2001 - 10:11 #4
Det virker stadig ikke og der er stadig ingen fejl!
Avatar billede jakoba Nybegynder
22. februar 2001 - 10:16 #5
Når du bruger en funktion til at beregne et resultat er det ofte nødvendigt at erklære en GLOBAL variabel til ta indeholde resultatet.
En global variabel er en der er defineret udenfor funktionen.
Variable defineret indeni en funktion er LOKALE og bliver glemt igen såsnart funktionen har gjort sit arbejde

<script language=\'javascript\'>

var total;    // global variabel der kan bruges og ændres sålænge siden er loaded
              // giv den fx en værdi fra total1() funktionen

function total1 ( ) {
    var tal1;    // lokale variable der forsvinder igen efter brugen
    var tal2;
    tal1 = parseInt(document.report.ekstern_real1.value);
    tal2 = parseInt(document.report.intern_real1.value);
   
    document.report.total_real1.value = tal1 + tal2;
    total = tal1 + tal2;
};

// i dine andre funktioner kan du så sige fx

    forskel = total - opmaalt;

// som om variablen total også var defineret der.

mvh JakobA
Avatar billede webbe Nybegynder
22. februar 2001 - 10:19 #6
jakoba:

Øøøøøøhhhh.......gider du snakke dansk??? ;o)

Jeg er nybegynder i javascript, så det virkede lidt som volapyk det du skrev!

Kan du ikke prøve at skrive det som det evt skal skrives?
Avatar billede jakoba Nybegynder
22. februar 2001 - 11:05 #7
Så er det nok bedre jeg blander mig udenom. Med to \"lærere\" der snakker i munden på hinanden bliver du blot mere forvirret.
Avatar billede webbe Nybegynder
22. februar 2001 - 11:07 #8
jakoba:

Jamen det første virkede ikke, så jeg er åben for forslag fra anden side!
Avatar billede el_gnu Nybegynder
22. februar 2001 - 11:29 #9
webbe => jeg har testet det første og det virker fint, men jakoba har ret, globale variable ville være noget nemmere i den her sammenhæng.

Globale variable erklæres mellem <script> og </script>

eksempel:

<script language=\"JavaScript\">

  var myGlobal;

</script>

Variablen myGlobal kan nu bruges overalt på siden, også af funktioner.


Lokale variable erklæres i en funktion

eksempel:

<script language=\"JavaScript\">

  function myFunc() {
    var myLocal;
  }

</script>

Variablen myLocal kan så bruges indefor funktionen, men forsvinder så snart funktionen returnerer.


I dit specifikke tilfælde vil det være smart med i hvertfald tre globale variable: total, resultat og procent

Scriptet vil så se således ud:

<script language=\"JavaScript\">

var total;
var resultat;
var procent;

function total1() {
    var tal1;
    var tal2;
   
    tal1 = parseInt(document.report.ekstern_real1.value);
    tal2 = parseInt(document.report.intern_real1.value);
   
    total = tal1 + tal2;

    document.report.total_real1.value = total;
}

function res1() {
    var tal17;
    var tal18;
    var tal19;
    var tal20;
    var tal21;
    var tal22;
    var tal23;
    var tal24;
    var tal25;
   
    tal17 = parseInt(document.report.ekstern_real1.value);
    tal18 = parseInt(document.report.intern_real1.value);
    tal19 = parseInt(document.report.royalty_real1.value);
    tal20 = parseInt(document.report.varekoebe_real1.value);
    tal21 = parseInt(document.report.varekoebi_real1.value);
    tal22 = parseInt(document.report.marketing_real1.value);
    tal23 = parseInt(document.report.andre_real1.value);
    tal24 = parseInt(document.report.personale_real1.value);
    tal25 = parseInt(document.report.afskrivninger_real1.value);

    resultat = (tal17 + tal18) - tal19 - tal20 - tal21 - tal22 - tal23 - tal24 - tal25;
   
    document.report.resultat_real1.value = resultat;
}

function pro() {

  procent = (resultat/total) * 100;
  document.report.procent_real1.value = procent;
}

</script>
Avatar billede el_gnu Nybegynder
22. februar 2001 - 11:32 #10
Det ville nok være smart at inkluder kald til total1 og res1 fra pro

function pro() {

  total1();
  res1();
  procent = (resultat/total) * 100;
  document.report.procent_real1.value = procent;

}

Avatar billede webbe Nybegynder
22. februar 2001 - 13:54 #11
Hmmmm - nu har jeg prøvet det hele!

Det virker okay på totalen og resultatet, men det vil bare ikke virke på procentudregningen!
Avatar billede jakoba Nybegynder
22. februar 2001 - 16:17 #12
check det felt du prøver at skrive værdien i procent ned i

har feltet en name=\"procent_real1\" parameter?
skrevet med bare små bogstaver?
med et understeg-tegn imellem procent ot real1?
sidste bogstav i navnet et ettal og ikke et l?
næstsidste bogstav et l og ikke et ettal?
feltet er defineret imellem <FORM  ... > og </FORM> i den form der har en name=\"report\" parameter?
Avatar billede webbe Nybegynder
23. februar 2001 - 10:13 #13
Sådan ser min form ud:

<form method=\"POST\" action=\"maanedsrapport.asp?action=save\" name=\"report\">


Sådan ser linien hvor procent skal skrives ud:

        <td valign=\"middle\" width=\"25\" align=\"center\"><input type=\"TEXT\" name=\"procent41\" size=\"3\" value=\"0\" disabled onKeyUp=\"proc25();\"></td>
Avatar billede webbe Nybegynder
23. februar 2001 - 10:59 #14
Nu virker det - her er min løsning:

function proc25() {
    var tal101;
    var tal102;
    var tal103;
    var tal104;
    var tal105;
    var tal106;
    var tal107;
    var tal108;
    var tal109;
   
    tal101 = parseInt(document.report.ekstern_real1.value);
    tal102 = parseInt(document.report.intern_real1.value);
    tal103 = parseInt(document.report.royalty_real1.value);
    tal104 = parseInt(document.report.varekoebe_real1.value);
    tal105 = parseInt(document.report.varekoebi_real1.value);
    tal106 = parseInt(document.report.marketing_real1.value);
    tal107 = parseInt(document.report.andre_real1.value);
    tal108 = parseInt(document.report.personale_real1.value);
    tal109 = parseInt(document.report.afskrivninger_real1.value);
   
    total = tal101 + tal102;
    resultat = total - tal103 - tal104 - tal105 - tal106 - tal107 - tal108 - tal109;
    procent = (resultat / total) * 100;
   
    document.report.procent41.value = procent;
    }
Avatar billede webbe Nybegynder
23. februar 2001 - 11:00 #15
Hvis I begge opretter et svar deler jeg pointene lige imellem jer!
Avatar billede el_gnu Nybegynder
23. februar 2001 - 13:14 #16
:-)
Avatar billede jakoba Nybegynder
23. februar 2001 - 16:18 #17
det var da vist mest el_gnu\'s svar; men 10 til mig er fint
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

IT-JOB