Avatar billede sos2830 Nybegynder
22. august 2001 - 13:18 Der er 14 kommentarer og
1 løsning

Hvad er der galt

På denne side skal man indtaste et beløb, et antal år og hvilken rente der er. Derefter skal man trykke på knappen og scriptet skal så lave en tabel hvor den viser året og det beløb man har....

<html>
  <head>
      <title>Javascript opgave1</title>
      <script language=\"javaScript\">
        function beregn(form)
        {
            document.writeln(\"<center><h1>Sådan formerer dine penge sig</h1></center>\");
            document.write(\"<table border=\'1\' align=\'center\'>\");
            document.writeln(\"<tr><th>År</th><th>Beløb</th></tr>\");
           
            var n = parseInt(form.aar);   
            var b; 
            var r = parseFloat(form.Rente);
            r = r/100;   
            var bel =parseFloat(form.beloeb);
           
            for(i=0; i<n; i++)
            {
              b = (bel * Math.pow(1+r, n));
              document.writeln(\"<tr><td>i</td> + <td>b</td></tr>\");
            }
           
        }
       
      </script>
     
  </head>
 
  <body>
     
      <form name=\"myform\">
     
        Beløb:<input type=\"text\" name=\"aar\" ><br>
     
        Antal år:<input type=\"text\" name=\"beloeb\"><br>
     
        Rente:<input type=\"text\" name=\"Rente\"><br>
       
        <input type=\"button\" value=\"Beregn\"  onClick=\"beregn(this.form)\">
      </form>
     
     
  </body>
</html>     
Avatar billede roenving Novice
22. august 2001 - 13:24 #1
Det skal vel være løbende:

            for(i=0; i<n; i++)
            {
              b = (bel * Math.pow(1+r, i)); //brug i -- ikke n
              document.writeln(\"<tr><td>i</td> + <td>b</td></tr>\");
            }
hth
jes
Avatar billede jakoba Nybegynder
22. august 2001 - 13:46 #2
Husk også at afslutte din <table kommando;
            document.writeln(\"</table>\");
efter for-løkken.
Avatar billede sos2830 Nybegynder
22. august 2001 - 14:11 #3
tak for svarene...nu mangler jeg bare at få noget ind i tabellen :(
Avatar billede jakoba Nybegynder
22. august 2001 - 14:25 #4
Der er vist byttet om på dine name= parametre i felterne:

        Beløb:<input type=\"text\" name=\"aar\" ><br>
        Antal år:<input type=\"text\" name=\"beloeb\"><br>
Avatar billede sos2830 Nybegynder
22. august 2001 - 14:32 #5
hmm min spade....nå men det hjælper stadig ikke på at der ikke kommer nogen rækker i tabellen når man kører siden
Avatar billede jakoba Nybegynder
22. august 2001 - 15:01 #6
måske det der  + tegn  har noget med det at gøre:
              document.writeln(\"<tr><td>i</td> + <td>b</td></tr>\");
prøv med
              document.writeln(\"<tr><td>i</td><td>b</td></tr>\");

kik evt med \'show source\' for at se det html-kode der bliver genereret.

Avatar billede jakoba Nybegynder
22. august 2001 - 15:06 #7
Ups.  kommandoerene \"<tr><td>\" er tekststrenge, men i og b er variable der skal evaluese før de udskrives:

              document.writeln(\"<tr><td>\" +i +\"</td><td>\" +b \"</td></tr>\");

parameteren er nu et streng-udtryk der bliver regnet sammen og udskrevet.

mvh JakobA
Avatar billede jakoba Nybegynder
22. august 2001 - 15:07 #8
Ups. Ups.  evaluese -> evalueres
Avatar billede jakoba Nybegynder
22. august 2001 - 15:25 #9
Ha Ha, det lykkedes !
Jeg håber søreme ikke det er et begynderkursus den opgave er fra sådan som vi har klodset i det :-))

            var n = parseInt(form.aar); 
bør være
            var n = parseInt(form.aar.value);
(.aar er selve felt-objektet  .aar.value er den indtastede streng)
Ditto for de andre felter.
 
Men den væsentligste er brugen af document.write til at skrive i den samme side som scriptet ligger i. såsnart du kalder  document.write  siger javascript \"nu skal der skrives en ny side, så for at gøre plads til den sletter jeg lige den gamle\". det betyder at værdierne i formen og også funktionen beregn ikke eksisterer mere, så funktionen kommer aldrig til sin ende.
  Istedet for at skrive document.write en masse gange skal vi samle alt det der skal skrives sammen i een lang streng, som tilsidst skrives på een gang (så når den ikke at opdage at den ikke findes mere før den allerede er udskrevet:)

<html>
  <head>
      <title>Javascript opgave1</title>
<META NAME=\"Generator\" CONTENT=\"Stone\'s WebWriter 3\">
      <script language=\"javaScript\">
        function beregn(form)
        {
        var tx = \"\"
            tx += \"<center><h1>Sådan formerer dine penge sig</h1></center>\";
            tx += \"<table border=\'1\' align=\'center\'>\";
            tx += \"<tr><th>År</th><th>Beløb</th></tr>\";
         
            var n = parseInt(form.aar.value); 
            var b;
            var r = parseFloat(form.Rente.value);
            r = r/100; 
            var bel =parseFloat(form.beloeb.value);

            for(i=0; i<n; i++)
            {
              b = (bel * Math.pow(1+r, i));
              tx += \"<tr><td>\"+i+\"</td><td>\"+b+\"</td></tr>\";
            }
            document.write( tx+\"</table>\");
            document.close();
         
        }
     
      </script>
   
  </head>

  <body>
   
      <form name=\"myform\">
   
        Beløb:<input type=\"text\" name=\"beloeb\" ><br>
   
        Antal år:<input type=\"text\" name=\"aar\"><br>
   
        Rente:<input type=\"text\" name=\"Rente\"><br>
     
        <input type=\"button\" value=\"Beregn\"  onClick=\"beregn(this.form)\">
      </form>
   
   
  <!-- WebWriter AutoDato -->Opdateret: 22.8.2001<!-- WW -->
</body>
</html>
Avatar billede roenving Novice
22. august 2001 - 15:26 #10
og det sidste plus skal med:

document.writeln(\"<tr><td>\" +i +\"</td><td>\" +b+ \"</td></tr>\");
,-]
Avatar billede roenving Novice
22. august 2001 - 15:27 #11
Øeh ... for avancerede begyndere da ´·)
Avatar billede sos2830 Nybegynder
22. august 2001 - 16:36 #12
Jakoba....det er det :(
Min lære kommer vist til at lære noget af det her !
Avatar billede jakoba Nybegynder
22. august 2001 - 16:57 #13
Lige et par spørgsmål før du basker til din lærer:

1) Det program du skrev svarer det til den opgave der blev stillet, eller har du været ambitiøs og skrevet et program der gør mere end der blev bedt om?

2) Har Læreren virkelig sagt at man skal skrive det hele før man begynder at teste? eller har han sagt at man skal lave små bidder af gangen og sikre sig de virker før man sætter mere på?

Du bør også huske på at eleverne på sådan nogen kurser ofte har meget forskellige. Nogen elever har programmeret andre sprog før og ved en masse derfra, Andre elever ved måske kun at programmering det er noget man gør med en PC\'er.

mvh JakobA
Avatar billede sos2830 Nybegynder
24. august 2001 - 12:17 #14
hej Jakob !
her er min lærers løsning der også virker...han bruger document.write inden har laver tabellen ! hvordan stemmen det overens med det du skrev ?

<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>


  <head>
    <title>Beregning af renters rente</title>
 
  <script LANGUAGE = \"JavaScript\">   
    var rateTXT, rate,
        yearsTXT, years,
        startAmountTXT, startAmount,            
        amount;
   
    rateTXT = window.prompt(\"Indtast rentesatsen i %\",\"0.0\");
    rate = parseFloat(rateTXT);
    rate /= 100;
 
    yearsTXT = window.prompt(\"Indtast antallet af år (helt tal)\",\"1\");
    years = parseInt(yearsTXT);
   
    startAmountTXT = window.prompt(\"Indtast startbeløb\",\"1000\");
    startAmount = parseFloat(startAmountTXT);
 
    document.writeln( \"<table BORDER = \'1\' align = \'center\'>\" );
   
    document.writeln( \"<caption>EN RENTETABEL MED RENTE: \" + rateTXT + \"%\" + \"</caption>\" );
    document.writeln( \"<colgroup>\" );
    document.writeln( \"<col width = \'100\' align = \'center\'>\" );
    document.writeln( \"<col width = \'250\' align = \'right\'>\" );
    document.writeln( \"</colgroup>\" );
    document.writeln( \"<thead>\" );
   
    document.writeln( \"<tr bgcolor = \'khaki\'><th>&Aring;r</th>\" );
    document.writeln(
        \"<th align = \'center\'><B>Bel&oslash;bets St&oslash;rrelse</B></th></tr>\" );
 
    for ( var year = 0; year <= years; ++year ) {
        amount = startAmount * Math.pow( 1.0 + rate, year );     
        document.writeln( \"<tr><td>\" + year + \"</td><td>\" +
          Math.round( amount * 100 ) / 100 + \"</td></tr>\" );
    }
 
    document.writeln( \"</table>\" );
  </script>
 
  </head>
  <body>
    <p> <h3 align = \"center\">Klik Refresh (eller Reload) for at køre dette script igen.</h3></P>
  </body>
</html>
Avatar billede jakoba Nybegynder
24. august 2001 - 13:08 #15
Nok den væsentligste forskel er at han bruger javascriptet til at skrive siden imens den loader.

han henter inputdata via prompt og imens venter siden pænt.

dine inputdata kom ind igennem formularfelter, og de forhindrer ikke siden i at loade færedig.

mvh JakobA

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