internet2107
Goto Top

Frage zu einem Javascript

Hallo zusammen.

Ich habe folgendes Problem.
Ich würde mit gerne ein Script erstellen, das mit Eingabe von aktuellem Gehalt, jährliche Gehaltserhöhung (in Prozent), Ausgaben, Inflation usw. eine Ausgabe erstellt, mit der ich auch z.B. in 10 Jahren sehen kann, wie hoch der Kontostand unter den aktuellen Ausgaben etc. aussieht.
All das klappt auch soweit.
Nur habe ich ein Problem mit der Angabe eines speziellen Monats. In dem Fall ist zum Beispiel die jährliche Gehaltserhöhung (in Prozent) immer im April.
Nur bekomme ich es nicht hin, dass auch die Monate entsprechend aktualisiert und berechnet werden.

Hier mal der Code

<html>
<head>
<title> Vermögensübersicht </title>
<script language="javascript">  

function plan()
{
var aktuelles_gehalt, laufzeit, zinssatz;
var periode, periode2, periode3, tilgung, zinsbetrag, aktuelles_gehalt_ausgabe, aktuelle_ausgaben_neu, zahlungsstrom, summezahlungsstrom, summezinsen, test, jetzt = new Date();

aktuelles_gehalt = Number(prompt("Gib das aktuelle Gehalt ein: "));  
laufzeit = Number(prompt("Gib die gewünschte Laufzeit ein (Jahre): "));  
zinssatz = Number(prompt("Gib die jaehrliche Gehaltserhoehung ein (in Prozent): "));  
aktuelle_ausgaben = Number(prompt("Gib die aktuellen mtl. Ausgaben ein: "));  
infation_zinssatz = Number(prompt("Gib die jaehrliche Inflation ein (in Prozent): "));  
aktuell_kontostand = Number(prompt("Aktueller Kontostand: "));  
aktueller_monat = jetzt.getMonth();
monat = ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'];  
monat_gehaltserhoehung = Number(prompt("Monat der jaehrlichen Gehaltserhoehung (als Zahl): "));  

window.document.write("<h2>Gehaltserhöhung / Vermögen</h2>");  
window.document.write("<ul>");  
window.document.write("<li>Gehalt aktuell: "+aktuelles_gehalt.toFixed(2)+" </li>");  
window.document.write("<li>Laufzeit: "+laufzeit+" Jahre</li>");  
window.document.write("<li>Jährliche Erhöhung: "+zinssatz+" Prozent</li>");  

tilgung = aktuelles_gehalt/laufzeit;
aktuelles_gehalt_ausgabe = aktuelles_gehalt;
aktuelle_ausgaben_neu=aktuelle_ausgaben;
summezahlungsstrom = aktuelles_gehalt;
summezinsen=0;

window.document.write("</ul>");  
window.document.write("<table border=0>");  
window.document.write("<tr>");  
window.document.write("<th>Jahr</th>");  
window.document.write("<th>Monat</th>");  
window.document.write("<th width=150>Erhöhung</th>");  
window.document.write("<th width=150>Höhe Gehalt</th>");  
window.document.write("<th width=150>Ausgaben</th>");  
window.document.write("<th width=150>Bilanz</th>");  
window.document.write("<th width=150>Kontostand</th>");  
window.document.write("</tr>");  

window.document.write("<tr>");  
window.document.write("<td align=center>0</td>");  
window.document.write("<td align=right>"+monat[aktueller_monat]+"</td>");  
window.document.write("<td align=right>0</td>");  
window.document.write("<td align=right>"+aktuelles_gehalt.toFixed(2)+"</td>");  
window.document.write("<td align=right>"+aktuelle_ausgaben.toFixed(2)+"</td>");  
window.document.write("<td align=right>"+(aktuelles_gehalt-aktuelle_ausgaben).toFixed(2)+"</td>");  
window.document.write("<td align=right>"+(aktuelles_gehalt-aktuelle_ausgaben+aktuell_kontostand).toFixed(2)+"</td>");  
kontostand = aktuelles_gehalt-aktuelle_ausgaben+aktuell_kontostand;

for (periode2=aktueller_monat;periode2<=11;periode2++)
{
    aktueller_monat=aktueller_monat+1;
    window.document.write("<tr>");  
window.document.write("<td align=center>"+""+"</td>");  
window.document.write("<td align=right>"+monat[aktueller_monat]+"</td>");  
window.document.write("<td align=right>"+""+"</td>");  
window.document.write("<td align=right>"+aktuelles_gehalt_ausgabe.toFixed(2)+"</td>");  
window.document.write("<td align=right>"+aktuelle_ausgaben.toFixed(2)+"</td>");  
window.document.write("<td align=right>"+(aktuelles_gehalt_ausgabe-aktuelle_ausgaben_neu).toFixed(2)+"</td>");  
kontostand=kontostand+aktuelles_gehalt_ausgabe-aktuelle_ausgaben_neu;
window.document.write("<td align=right>"+(kontostand).toFixed(2)+"</td>"); //Kontostand  
}

for (periode=1;periode<=laufzeit;periode++)
{

zinsen = aktuelles_gehalt_ausgabe * zinssatz / 100;
zinsen_inflation = aktuelle_ausgaben * infation_zinssatz / 100;
aktuelles_gehalt_ausgabe+=zinsen;
aktuelle_ausgaben_neu+=zinsen_inflation;
summezinsen+=zinsen;
aktueller_monat=aktueller_monat+1;
window.document.write("<tr>");  
window.document.write("<td align=center>"+periode+"</td>");  
window.document.write("<td align=right>"+monat[aktueller_monat]+"</td>");  
window.document.write("<td align=right>"+zinsen.toFixed(2)+"</td>");  
window.document.write("<td align=right>"+aktuelles_gehalt_ausgabe.toFixed(2)+"</td>");  
window.document.write("<td align=right>"+aktuelle_ausgaben_neu.toFixed(2)+"</td>");  
window.document.write("<td align=right>"+(aktuelles_gehalt_ausgabe-aktuelle_ausgaben_neu).toFixed(2)+"</td>");  

kontostand=kontostand+aktuelles_gehalt_ausgabe-aktuelle_ausgaben_neu;
window.document.write("<td align=right>"+(kontostand).toFixed(2)+"</td>");//Kontostand  


for (periode3=1;periode3<=monat_gehaltserhoehung;periode3++)
{
    aktueller_monat=aktueller_monat+1;
window.document.write("<tr>");  
window.document.write("<td align=center>"+""+"</td>");  
window.document.write("<td align=right>"+monat[aktueller_monat]+"</td>");  
window.document.write("<td align=right>"+""+"</td>");  
window.document.write("<td align=right>"+aktuelles_gehalt_ausgabe.toFixed(2)+"</td>");  
window.document.write("<td align=right>"+aktuelle_ausgaben_neu.toFixed(2)+"</td>");  
window.document.write("<td align=right>"+(aktuelles_gehalt_ausgabe-aktuelle_ausgaben_neu).toFixed(2)+"</td>");  
kontostand=kontostand+aktuelles_gehalt_ausgabe-aktuelle_ausgaben_neu;
window.document.write("<td align=right>"+(kontostand).toFixed(2)+"</td>");//Kontostand  
}

for (periode2=monat_gehaltserhoehung;periode2<=(11-monat_gehaltserhoehung);periode2++)
{
    aktueller_monat=aktueller_monat+1;
    window.document.write("<tr>");  
window.document.write("<td align=center>"+""+"</td>");  
window.document.write("<td align=center>"+monat[aktueller_monat]+"</td>");  
window.document.write("<td align=right>"+""+"</td>");  
window.document.write("<td align=right>"+aktuelles_gehalt_ausgabe.toFixed(2)+"</td>");  
window.document.write("<td align=right>"+aktuelle_ausgaben_neu.toFixed(2)+"</td>");  
window.document.write("<td align=right>"+(aktuelles_gehalt_ausgabe-aktuelle_ausgaben_neu).toFixed(2)+"</td>");  
kontostand=kontostand+aktuelles_gehalt_ausgabe-aktuelle_ausgaben_neu;
window.document.write("<td align=right>"+(kontostand).toFixed(2)+"</td>");//Kontostand  
}
window.document.write("</tr>");  
}

periode=periode-1;
window.document.write("</table>");  
window.document.write("<p><i>Summe Erhöhung in " +  periode + " Jahren ergibt "+summezinsen.toFixed(2)+"Euro </i></p>");  

}
</script>
</head>
<body onload="plan()">  
</body>
</html>

Wir man im Screenshot sieht, wird nach dem Dezember der Monat Januar nicht mehr erzeugt.
Hinzu kommt, dass ja eigentlich erst ab April des Folgejahres die Erhöhung starten soll.
bildschirmfoto 2022-05-22 um 10.38.46

Richtig soll es wie im anderen Screenshot sein, was ich dann zum Verständnis in Excel erzeugt habe.
bildschirmfoto 2022-05-22 um 10.45.49


Über Hilfe und Tipps wäre ich sehr dankbar.

Danke.

Content-Key: 2866397234

Url: https://administrator.de/contentid/2866397234

Printed on: April 25, 2024 at 17:04 o'clock

Member: Mystery-at-min
Mystery-at-min May 22, 2022 at 09:19:51 (UTC)
Goto Top
Morgen,

ohne es genau angeschaut zu haben;

1. Warum machst du das in Javascript?
2. du iterierst den Monatszähler jeweils um 1, das ist OK, dann musst du aber wenn du auf den Monat herunterbrechen willst eben Modulo 12 und dann den Monatsnamen ausgeben.
3. Identisch gilt dann für die Gehaltserhöhung, wenn Monatszähler Modulo 12 = 4 => Gehaltserhöhung...

VG
Member: internet2107
internet2107 May 22, 2022 at 09:29:20 (UTC)
Goto Top
Zitat von @Mystery-at-min:

Morgen,

ohne es genau angeschaut zu haben;

1. Warum machst du das in Javascript?
2. du iterierst den Monatszähler jeweils um 1, das ist OK, dann musst du aber wenn du auf den Monat herunterbrechen willst eben Modulo 12 und dann den Monatsnamen ausgeben.

Hi und danke für die Antwort.
Zu 1) Das hat diverse (private) Gründe, diese nun alle zu erklären, würde den Rahmen sprengen.
zu 2+3) Das verstehe ich gerade nicht face-sad