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-ID: 2866397234

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

Ausgedruckt am: 25.11.2024 um 11:11 Uhr

Mystery-at-min
Mystery-at-min 22.05.2022 um 11:19:51 Uhr
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
internet2107
internet2107 22.05.2022 um 11:29:20 Uhr
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