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
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.
Richtig soll es wie im anderen Screenshot sein, was ich dann zum Verständnis in Excel erzeugt habe.
Über Hilfe und Tipps wäre ich sehr dankbar.
Danke.
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.
Richtig soll es wie im anderen Screenshot sein, was ich dann zum Verständnis in Excel erzeugt habe.
Über Hilfe und Tipps wäre ich sehr dankbar.
Danke.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2866397234
Url: https://administrator.de/contentid/2866397234
Ausgedruckt am: 25.11.2024 um 11:11 Uhr
2 Kommentare
Neuester Kommentar
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
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