• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Nur eine winzige Frage:-)

Lancelot

Lounge-Member
Hai ihr Lieben, ich benötige mal eben eure Hilfe zu einem Thema, bei dem ihr schon mal vor Jahren geholfen habt. Ich hatte einen Zinsrechner zusammengebastelt, der die wichtigsten Berechnungen im zivilrechtlichen Bereich abdeckt. Nun der funzt auch gut, aber der abweichende Zinssatz macht mir Probleme, denn er greift auch auf das Script zum Basiszinssatz zu und das soll er nicht. Bitte helft mir, denn ich stecke seit Tagen damit fest..........:icon8:

Hier das Script:

HTML:
<body text="#000000" bgcolor="#FFFFFF" align="left" >
<script TYPE="text/javascript" language="JavaScript">

tmax=new Array (31,29,31,30,31,30,31,31,30,31,30,31);


function check(wert)
{
wert=wert.replace(/,/,".");wert=parseFloat(wert);if (isNaN(wert)) wert=0;
return wert
}


function calculate()
{
if (document.my_calc.tagbeginn.value>tmax[document.my_calc.monatbeginn.selectedIndex])document.my_calc.tagbeginn.value=tmax[document.my_calc.monatbeginn.selectedIndex];
if (document.my_calc.tagende.value>tmax[document.my_calc.monatende.selectedIndex])document.my_calc.tagende.value=tmax[document.my_calc.monatende.selectedIndex];
if  ((document.my_calc.jahrbeginn.value%4) && (document.my_calc.monatbeginn.value=="02") && (document.my_calc.tagbeginn.value=="29")) document.my_calc.tagbeginn.value="28";
if  ((document.my_calc.jahrende.value%4) && (document.my_calc.monatende.value=="02") && (document.my_calc.tagende.value=="29")) document.my_calc.tagende.value="28";


var Date1 = new Date(document.my_calc.jahrbeginn.value,document.my_calc.monatbeginn.value-1,document.my_calc.tagbeginn.value);
var Date2 = new Date(document.my_calc.jahrende.value,document.my_calc.monatende.value-1,document.my_calc.tagende.value);
ta=Date1.getTime()/10000;

te=1000+Date2.getTime()/10000;

s=check(document.my_calc.betrag.value);document.my_calc.betrag.value=s;

if (document.my_calc.satz[0].checked)z=5;
if (document.my_calc.satz[1].checked)z=8;
if (document.my_calc.satz[2].checked)z=9;
if (document.my_calc.satz[3].checked)z=check(document.my_calc.zssatz.value);document.my_calc.zssatz.value=z;
zs=0

for (i=ta;i<=te;i=i+8640)
{
        /*2003*/
        if (i>=104137560 && i<105701040)zs=zs+s*(1.97+z)/36500;
        if (i>=105701040 && i<107291160)zs=zs+s*(1.22+z)/36500;
        /*2004*/
        if (i>=107291160 && i<108863280)zs=zs+s*(1.14+z)/36600;
        if (i>=108863280 && i<110453400)zs=zs+s*(1.13+z)/36600;
        /*2005*/
        if (i>=110453400 && i<112016880)zs=zs+s*(1.21+z)/36500;
        if (i>=112016880 && i<113607000)zs=zs+s*(1.17+z)/36500;
        /*2006*/
        if (i>=113607000 && i<115170480)zs=zs+s*(1.37+z)/36500;
        if (i>=115170480 && i<116760600)zs=zs+s*(1.95+z)/36500;
        /*2007*/
        if (i>=116760600 && i<118324080)zs=zs+s*(2.70+z)/36500;
        if (i>=118324080 && i<119914200)zs=zs+s*(3.19+z)/36500;
        /*2008*/
        if (i>=119914200 && i<121486320)zs=zs+s*(3.32+z)/36600;
        if (i>=121486320 && i<123076440)zs=zs+s*(3.19+z)/36600;
        /*2009*/
        if (i>=123076440 && i<124639920)zs=zs+s*(1.62+z)/36500;
        if (i>=124639920 && i<126230040)zs=zs+s*(0.12+z)/36500;
        /*2010*/
        if (i>=126230040 && i<127793520)zs=zs+s*(0.12+z)/36500;
        if (i>=127793520 && i<129383640)zs=zs+s*(0.12+z)/36500;
        /*2011*/
        if (i>=129383640 && i<130947120)zs=zs+s*(0.12+z)/36500;
        if (i>=130947120 && i<132537240)zs=zs+s*(0.12+z)/36500;
        /*2012*/
        if (i>=132537240 && i<134109360)zs=zs+s*(0.12+z)/36600;
        if (i>=134109360 && i<135699480)zs=zs+s*(0.12+z)/36500;
        /*2013*/
        if (i>=135699480  && i<137262960)zs=zs+s*(-0.13+z)/36500;
        if (i>=137262960  && i<138853080)zs=zs+s*(-0.38+z)/36500;
        /*2014*/
        if (i>=138853080  && i<140407920)zs=zs+s*(-0.63+z)/36500;
        if (i>=140407920  && i<142006680)zs=zs+s*(-0.73+z)/36500;
        /*2015*/
        if (i>=142006680  && i<143561520)zs=zs+s*(-0.83+z)/36500;
        if (i>=143561520  && i<145160280)zs=zs+s*(-0.83+z)/36500;
        /*2016--<*/
        if (i>=145160280  && i<146732400)zs=zs+s*(0.12+z)/36600;
        if (i>=146732400  && i<148322520)zs=zs+s*(0.12+z)/36600;
        /*2017*/
        if (i>=148322520  && i<149886000)zs=zs+s*(0.12+z)/36500;
        if (i>=149886000  && i<151476120)zs=zs+s*(0.12+z)/36500;
        /*2018*/
        if (i>=151476120  && i<153039600)zs=zs+s*(0.12+z)/36500;
        if (i>=153039600  && i<154629720)zs=zs+s*(0.12+z)/36500;
        /*2019*/
        if (i>=154629720  && i<156193200)zs=zs+s*(0.12+z)/36500;
        if (i>=156193200  && i<160000000)zs=zs+s*(0.12+z)/36500;
}

document.my_calc.timeshift.value=Math.round(1+(te-ta-1000)/8640);
document.my_calc.barzins.value=zs.toFixed(2);
document.my_calc.tageskennzahl1.value=Date1.getTime()/10000;
document.my_calc.datumonatbeginn.value=Date1.toLocaleString();

        var s1 = parseFloat(document.getElementById("betrag").value.replace(",", "."));
        if (isNaN(s1)) s1 = 0;
        var s2 = parseFloat(document.getElementById("barzins").value.replace(",", "."));
        if (isNaN(s2)) s2 = 0;

        document.getElementById("gesamt").value = (s1 + s2).toFixed(2);


        var s4 = parseFloat(document.getElementById("timeshift").value.replace(",", "."));
        if (isNaN(s1)) s4 = 0;
        var s5 = parseFloat(document.getElementById("barzins").value.replace(",", "."));
        if (isNaN(s2)) s5 = 0;
        document.getElementById("jahreszins").value = ((s5 / s4) * 365).toFixed(2);

        var s6 = parseFloat(document.getElementById("betrag").value.replace(",", "."));
        if (isNaN(s1)) s6 = 0;
        var s7 = parseFloat(document.getElementById("barzins").value.replace(",", "."));
        if (isNaN(s2)) s7 = 0;
        document.getElementById("zsgesamt").value =  ( s7 / s6 * 100).toFixed(2);


}

function clear()
{
document.my_calc.barzins.value="";
document.my_calc.timeshift.value="";
}

function korrektur()
{
clear_ausgabe();
if (document.my_calc.tagbeginn.value>tmax[document.my_calc.monatbeginn.selectedIndex])document.my_calc.tagbeginn.value=tmax[document.my_calc.monatbeginn.selectedIndex];
if (document.my_calc.tagende.value>tmax[document.my_calc.monatende.selectedIndex])document.my_calc.tagende.value=tmax[document.my_calc.monatende.selectedIndex];
if  ((document.my_calc.jahrbeginn.value%4) && (document. my_calc.monatbeginn.value=="02") && (document.my_calc.tagbeginn.value=="29")) document.my_calc.tagbeginn.value="28";
if  ((document.my_calc.jahrende.value%4) && (document.my_calc.monatende.value=="02") && (document.my_calc.tagende.value=="29")) document.my_calc.tagende.value="28";
}



</script>
<form name="my_calc" action="">

<div name="zeile1">
<table style="table-layout:fixed">
<tr>
<td width="15%">Betrag </td>
<td width="25%"><input name="betrag" type="text" size="12" maxlength="12" value="0,00" onclick="clear()"></td>
<td></td>
</tr>
<tr>
<td width="25%">Zins über Basiszins</td>
<td>
<input checked name="satz" type="radio" value="true" onclick="clear()"> 5 %  
<input name="satz" type="radio" value="false" onclick="clear()"> 8 %  
<input name="satz" type="radio" value="false" onclick="clear()"> 9 %  
<td></td>
</tr>
<tr><td> </td></tr>
<tr>
<td width="10%"><input name="satz" type="radio" value="false" onclick="clear()"> anderer Zins  </td>
<td width="25%"><input name="zssatz" type="text" value="Zinssatz" size="12" maxlength="8"></td>
<td></td>
</tr>

</table>
</div>

<div name="zeile2">
<table style="table-layout:fixed">
<tr>
<td width="15%">Zinsbeginn</td>
<td>
<select  name="tagbeginn" size="1"  onclick="clear()">
<option value="01" selected>1.</option>
<option value="02">2.</option>
<option value="03">3.</option>
<option value="04">4.</option>
<option value="05">5.</option>
<option value="06">6.</option>
<option value="07">7.</option>
<option value="08">8.</option>
<option value="09">9.</option>
<option value="10">10.</option>
<option value="11">11.</option>
<option value="12">12.</option>
<option value="13">13.</option>
<option value="14">14.</option>
<option value="15">15.</option>
<option value="16">16.</option>
<option value="17">17.</option>
<option value="18">18.</option>
<option value="19">19.</option>
<option value="20">20.</option>
<option value="21">21.</option>
<option value="22">22.</option>
<option value="23">23.</option>
<option value="24">24.</option>
<option value="25">25.</option>
<option value="26">26.</option>
<option value="27">27.</option>
<option value="28">28.</option>
<option value="29">29.</option>
<option value="30">30.</option>
<option value="31">31.</option>
</select>

<select  name="monatbeginn" size="1" onChange="korrektur()">
<option value="01" selected>Januar</option>
<option value="02">Februar</option>
<option value="03">März</option>
<option value="04">April</option>
<option value="05">Mai</option>
<option value="06">Juni</option>
<option value="07">Juli</option>
<option value="08">August</option>
<option value="09">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12">Dezember</option>
</select>

<select  name="jahrbeginn" size="1"  onclick="clear()">
<option value="2003">2003</option>
<option value="2004">2004</option>
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015" selected>2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
</select>
</td>
</tr>
<tr>
<td>Zahlungdatum</td>
<td>
<select  name="tagende" size="1"  onclick="clear()">
<option value="01">1.</option>
<option value="02">2.</option>
<option value="03">3.</option>
<option value="04">4.</option>
<option value="05">5.</option>
<option value="06">6.</option>
<option value="07">7.</option>
<option value="08">8.</option>
<option value="09">9.</option>
<option value="10">10.</option>
<option value="11">11.</option>
<option value="12">12.</option>
<option value="13">13.</option>
<option value="14">14.</option>
<option value="15">15.</option>
<option value="16">16.</option>
<option value="17">17.</option>
<option value="18">18.</option>
<option value="19">19.</option>
<option value="20">20.</option>
<option value="21">21.</option>
<option value="22">22.</option>
<option value="23">23.</option>
<option value="24">24.</option>
<option value="25">25.</option>
<option value="26">26.</option>
<option value="27">27.</option>
<option value="28">28.</option>
<option value="29">29.</option>
<option value="30">30.</option>
<option value="31" selected>31.</option>
</select>

<select  name="monatende" size="1"  onChange="korrektur()">
<option value="01">Januar</option>
<option value="02">Februar</option>
<option value="03">März</option>
<option value="04">April</option>
<option value="05">Mai</option>
<option value="06">Juni</option>
<option value="07">Juli</option>
<option value="08">August</option>
<option value="09">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12" selected>Dezember</option>
</select>
<select  name="jahrende" size="1"  onclick="clear()">
<option value="2003">2003</option>
<option value="2004">2004</option>
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015" selected>2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>

</select>
</td>
</tr>
</table>
</div>

<div name="zeile3">
<table style="table-layout:fixed">
<tr>
<td width="25%"> </td>
<td width="25%"><input type="button" value="Zinsen errechnen"  onclick="calculate()"></td>
<td> </td>
</tr>
</table>
</div>

<div name="ausgabe">
<table style="table-layout:fixed">
<tr>
<td style="center" width="33%">Tage  </td><td style="center" width="85%"><input type="text" name="timeshift" size="8" value="" readonly></td>
</tr>
<tr>
<td style="center" width="33%">Zinsen  </td><td style="center" width="85%"><input type="text" name="barzins" size="8" value="" readonly> Euro</td>
</tr>
<tr>
<td style="center" width="33%">Gesamtbetrag </td><td style="center" width="85%"><input type="text" width="75%" name="gesamt" size="8" value="" readonly> Euro</td>
</tr>

<!-- wird aus dem Kontext generiert -- Tageskennzahl 01.01. = Kennziffer Jahresbeginn. -- 01.07. Kennziffer Jahresmitte-->
<tr>
<td><input type="hidden" name="tageskennzahl1" size="20"> <input type="hidden" name="datumonatbeginn" size="40"></td>

</tr>
</table>

</form>
</div>
 
Zuletzt bearbeitet von einem Moderator:
Das sieht man dem Code leider an...

Kannst du mal genauer erklären, was das Skript genau ausrechnen soll? Denn ich bin mir ziemlich sicher, dass keine Bank dir eine tägliche Verzinsung gibt. Normalerweise wir quartalweise oder Jahresweise verzinst. Dadurch muss die Bank weniger Zins zahlen.
Sauber wäre es eigentlich, wenn du mit der Lösung der Differentialgleichung arbeiten würdest, aber das macht natürlich auch keine Bank... da müsste sie ja noch mehr zahlen als bei der täglichen Verzinsung.

denn er greift auch auf das Script zum Basiszinssatz zu
Was meinst du damit genau?
 
Hai kkaspner,

danke zunächst mal für die Antwort. Ich weiss, der Code ist veraltet, aber gepflegt:) Es ist ein Service für unsere Mandanten, um Forderungen nebst Zinsen errechnen zu können. Die gesetzlichen Zinssätze sind 5%, 8% und neun Prozent über dem Basiszinssatz der EZB. Da letzterer alle halbe Jahre variabel ist, ist diese aufwändige Trennung nötig. Da sich aber auch von den gesetzlichen Zinsen abweichende Forderungen aus Urteilen, Verträgen, notariellen Schuldurkunden ergeben können, wollte ich die Möglichkeit geben, einen abweichenden Zinssatz einzugeben und dann die Gesamtforderung berechnen zu lassen.

Der Zinssatz mit dem gerechnet werden soll, ergibt sich aus dem eingegebenen Zins in Kombination mit dem Basiszins (der gegenwärtig negativ ist). Also beträgt der Zins nicht glatte 5%, sondern 4.17%. Der abweichend Zinssatz soll hingegen absolut sein. Wenn eingegeben wird 10%, soll auch mit diesen 10% gerechnet werden.

PS: Das Layout sieht nachher natürlich anders aus:))

Grüße L
 
OK - das ist nicht weiter schwer.

Code:
if (document.my_calc.satz[3].checked){
	z=check(document.my_calc.zssatz.value);
	zs = 0;
	var endTime = Date2.getTime() + 1e7;
	for (var cDate = new Date(Date1.getTime()); cDate.getTime() <= endTime; cDate.setDate(cDate.getDate() + 1)){
		var year = cDate.getFullYear();
		var isLeap = year % 4 === 0 && year % 100 !== 0;
		zs += s*z / (365 + isLeap);
	}
}
else {
	zs=0
	for (i=ta;i<=te;i=i+8640){
		/*2003*/
		if (i>=104137560 && i<105701040)zs=zs+s*(1.97+z)/36500;
		if (i>=105701040 && i<107291160)zs=zs+s*(1.22+z)/36500;
		/*2004*/
		if (i>=107291160 && i<108863280)zs=zs+s*(1.14+z)/36600;
		if (i>=108863280 && i<110453400)zs=zs+s*(1.13+z)/36600;
		/*2005*/
		if (i>=110453400 && i<112016880)zs=zs+s*(1.21+z)/36500;
		if (i>=112016880 && i<113607000)zs=zs+s*(1.17+z)/36500;
		/*2006*/
		if (i>=113607000 && i<115170480)zs=zs+s*(1.37+z)/36500;
		if (i>=115170480 && i<116760600)zs=zs+s*(1.95+z)/36500;
		/*2007*/
		if (i>=116760600 && i<118324080)zs=zs+s*(2.70+z)/36500;
		if (i>=118324080 && i<119914200)zs=zs+s*(3.19+z)/36500;
		/*2008*/
		if (i>=119914200 && i<121486320)zs=zs+s*(3.32+z)/36600;
		if (i>=121486320 && i<123076440)zs=zs+s*(3.19+z)/36600;
		/*2009*/
		if (i>=123076440 && i<124639920)zs=zs+s*(1.62+z)/36500;
		if (i>=124639920 && i<126230040)zs=zs+s*(0.12+z)/36500;
		/*2010*/
		if (i>=126230040 && i<127793520)zs=zs+s*(0.12+z)/36500;
		if (i>=127793520 && i<129383640)zs=zs+s*(0.12+z)/36500;
		/*2011*/
		if (i>=129383640 && i<130947120)zs=zs+s*(0.12+z)/36500;
		if (i>=130947120 && i<132537240)zs=zs+s*(0.12+z)/36500;
		/*2012*/
		if (i>=132537240 && i<134109360)zs=zs+s*(0.12+z)/36600;
		if (i>=134109360 && i<135699480)zs=zs+s*(0.12+z)/36500;
		/*2013*/
		if (i>=135699480  && i<137262960)zs=zs+s*(-0.13+z)/36500;
		if (i>=137262960  && i<138853080)zs=zs+s*(-0.38+z)/36500;
		/*2014*/
		if (i>=138853080  && i<140407920)zs=zs+s*(-0.63+z)/36500;
		if (i>=140407920  && i<142006680)zs=zs+s*(-0.73+z)/36500;
		/*2015*/
		if (i>=142006680  && i<143561520)zs=zs+s*(-0.83+z)/36500;
		if (i>=143561520  && i<145160280)zs=zs+s*(-0.83+z)/36500;
		/*2016--<*/
		if (i>=145160280  && i<146732400)zs=zs+s*(0.12+z)/36600;
		if (i>=146732400  && i<148322520)zs=zs+s*(0.12+z)/36600;
		/*2017*/
		if (i>=148322520  && i<149886000)zs=zs+s*(0.12+z)/36500;
		if (i>=149886000  && i<151476120)zs=zs+s*(0.12+z)/36500;
		/*2018*/
		if (i>=151476120  && i<153039600)zs=zs+s*(0.12+z)/36500;
		if (i>=153039600  && i<154629720)zs=zs+s*(0.12+z)/36500;
		/*2019*/
		if (i>=154629720  && i<156193200)zs=zs+s*(0.12+z)/36500;
		if (i>=156193200  && i<160000000)zs=zs+s*(0.12+z)/36500;
	}
}

document.my_calc.zssatz.value=z;

der Code ist veraltet
Leider nicht nur veraltet, sondern auch nicht besonders gut geschrieben... unnötige globale Variablen, extrem seltsame Programmlogik (warum arbeitest du in Einheiten von 10s?), aussagelose Variablennamen, unsauberes Codelayout, ...

Ja, der Zinssatz ist eingetragen - auch das könnte man einfacher gestalten.

PS: Ich heiße anders... ;)
PPS: Moment... du rechnest hier ja gar nicht mit Zinseszins... warum nicht? Wenn das wirklich so richtig ist, kann man die Rechnung extrem stark vereinfachen.
 
Zuletzt bearbeitet:
PS: Ich heiße anders... ;)

Das Auge kommt mir auch bekannt vor und wenn du früher mal B warst, dann geht ein Teil des Codes auf Dich:icon6:


PPS: Moment... du rechnest hier ja gar nicht mit Zinseszins... warum nicht? Wenn das wirklich so richtig ist, kann man die Rechnung extrem stark vereinfachen.

Weil Zinseszinsen nach dem Gesetz nicht erlaubt sind. Und ich bin für jeden Tipp wie es einfacher geht, dankbar:)

Grüße L
 
Nein, ich heiße schon immer so... das "s" und das "p" sind nur anders herum.

Weil Zinseszinsen nach dem Gesetz nicht erlaubt sind.
OK - das wusste ich nicht.

Dadurch musst aber das ganze nicht Tageweise durchiterieren, sondern kannst direkt von einem Stichtag der Leitzinsänderung zur nächsten gehen. Nur das erste und das letzte Halbjahr müssen anders bearbeitet werden.
Ist der Stichtag für die Änderung immer der 1.1. und der 1.7.?
 
Sorry, kinners, bin halt etwas aus der Übung:) und die Fehlerkonsole muss ich verpasst haben (mo erzählt mir auch nix mehr:D) .... naja und funzt net heisst halt, dass das ganze Script blockt. Und sorry, kkaspner, das Script klemmt nach wie vor, aber ich bedanke mich sehr für Eure Hilfe
Grüße L
 
Die Fehlerkonsole meint:

SCRIPT1009: '}' erwartet
Datei: zins.html, Zeile: 151, Spalte: 1

Der Code ist jetzt:
Code:
<table <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body text="#000000" bgcolor="#FFFFFF" align="left" >
<script TYPE="text/javascript" language="JavaScript">

tmax=new Array (31,29,31,30,31,30,31,31,30,31,30,31);


function check(wert)
{
wert=wert.replace(/,/,".");wert=parseFloat(wert);if (isNaN(wert)) wert=0;
return wert
}


function calculate()
{
if (document.my_calc.tagbeginn.value>tmax[document.my_calc.monatbeginn.selectedIndex])document.my_calc.tagbeginn.value=tmax[document.my_calc.monatbeginn.selectedIndex];
if (document.my_calc.tagende.value>tmax[document.my_calc.monatende.selectedIndex])document.my_calc.tagende.value=tmax[document.my_calc.monatende.selectedIndex];
if  ((document.my_calc.jahrbeginn.value%4) && (document.my_calc.monatbeginn.value=="02") && (document.my_calc.tagbeginn.value=="29")) document.my_calc.tagbeginn.value="28";
if  ((document.my_calc.jahrende.value%4) && (document.my_calc.monatende.value=="02") && (document.my_calc.tagende.value=="29")) document.my_calc.tagende.value="28";


var Date1 = new Date(document.my_calc.jahrbeginn.value,document.my_calc.monatbeginn.value-1,document.my_calc.tagbeginn.value);
var Date2 = new Date(document.my_calc.jahrende.value,document.my_calc.monatende.value-1,document.my_calc.tagende.value);
ta=Date1.getTime()/10000;

te=1000+Date2.getTime()/10000;

s=check(document.my_calc.betrag.value);document.my_calc.betrag.value=s;

if (document.my_calc.satz[0].checked)z=5;
if (document.my_calc.satz[1].checked)z=8;
if (document.my_calc.satz[2].checked)z=9;
if (document.my_calc.satz[3].checked){
        z=check(document.my_calc.zssatz.value);
        zs = 0;
        var endTime = Date2.getTime() + 1e7;
        for (var cDate = new Date(Date1.getTime()); cDate.getTime() <= endTime; cDate.setDate(cDate.getDate() + 1)){
                var year = cDate.getFullYear();
                var isLeap = year % 4 === 0 && year % 100 !== 0;
                zs += s*z / (365 + isLeap);
        }
}
else {
        zs=0

for (i=ta;i<=te;i=i+8640)
{
        /*2003*/
        if (i>=104137560 && i<105701040)zs=zs+s*(1.97+z)/36500;
        if (i>=105701040 && i<107291160)zs=zs+s*(1.22+z)/36500;
        /*2004*/
        if (i>=107291160 && i<108863280)zs=zs+s*(1.14+z)/36600;
        if (i>=108863280 && i<110453400)zs=zs+s*(1.13+z)/36600;
        /*2005*/
        if (i>=110453400 && i<112016880)zs=zs+s*(1.21+z)/36500;
        if (i>=112016880 && i<113607000)zs=zs+s*(1.17+z)/36500;
        /*2006*/
        if (i>=113607000 && i<115170480)zs=zs+s*(1.37+z)/36500;
        if (i>=115170480 && i<116760600)zs=zs+s*(1.95+z)/36500;
        /*2007*/
        if (i>=116760600 && i<118324080)zs=zs+s*(2.70+z)/36500;
        if (i>=118324080 && i<119914200)zs=zs+s*(3.19+z)/36500;
        /*2008*/
        if (i>=119914200 && i<121486320)zs=zs+s*(3.32+z)/36600;
        if (i>=121486320 && i<123076440)zs=zs+s*(3.19+z)/36600;
        /*2009*/
        if (i>=123076440 && i<124639920)zs=zs+s*(1.62+z)/36500;
        if (i>=124639920 && i<126230040)zs=zs+s*(0.12+z)/36500;
        /*2010*/
        if (i>=126230040 && i<127793520)zs=zs+s*(0.12+z)/36500;
        if (i>=127793520 && i<129383640)zs=zs+s*(0.12+z)/36500;
        /*2011*/
        if (i>=129383640 && i<130947120)zs=zs+s*(0.12+z)/36500;
        if (i>=130947120 && i<132537240)zs=zs+s*(0.12+z)/36500;
        /*2012*/
        if (i>=132537240 && i<134109360)zs=zs+s*(0.12+z)/36600;
        if (i>=134109360 && i<135699480)zs=zs+s*(0.12+z)/36500;
        /*2013*/
        if (i>=135699480  && i<137262960)zs=zs+s*(-0.13+z)/36500;
        if (i>=137262960  && i<138853080)zs=zs+s*(-0.38+z)/36500;
        /*2014*/
        if (i>=138853080  && i<140407920)zs=zs+s*(-0.63+z)/36500;
        if (i>=140407920  && i<142006680)zs=zs+s*(-0.73+z)/36500;
        /*2015*/
        if (i>=142006680  && i<143561520)zs=zs+s*(-0.83+z)/36500;
        if (i>=143561520  && i<145160280)zs=zs+s*(-0.83+z)/36500;
        /*2016--<*/
        if (i>=145160280  && i<146732400)zs=zs+s*(0.12+z)/36600;
        if (i>=146732400  && i<148322520)zs=zs+s*(0.12+z)/36600;
        /*2017*/
        if (i>=148322520  && i<149886000)zs=zs+s*(0.12+z)/36500;
        if (i>=149886000  && i<151476120)zs=zs+s*(0.12+z)/36500;
        /*2018*/
        if (i>=151476120  && i<153039600)zs=zs+s*(0.12+z)/36500;
        if (i>=153039600  && i<154629720)zs=zs+s*(0.12+z)/36500;
        /*2019*/
        if (i>=154629720  && i<156193200)zs=zs+s*(0.12+z)/36500;
        if (i>=156193200  && i<160000000)zs=zs+s*(0.12+z)/36500;
}

document.my_calc.timeshift.value=Math.round(1+(te-ta-1000)/8640);
document.my_calc.barzins.value=zs.toFixed(2);
document.my_calc.tageskennzahl1.value=Date1.getTime()/10000;
document.my_calc.datumonatbeginn.value=Date1.toLocaleString();

        var s1 = parseFloat(document.getElementById("betrag").value.replace(",", "."));
        if (isNaN(s1)) s1 = 0;
        var s2 = parseFloat(document.getElementById("barzins").value.replace(",", "."));
        if (isNaN(s2)) s2 = 0;

        document.getElementById("gesamt").value = (s1 + s2).toFixed(2);


        var s4 = parseFloat(document.getElementById("timeshift").value.replace(",", "."));
        if (isNaN(s1)) s4 = 0;
        var s5 = parseFloat(document.getElementById("barzins").value.replace(",", "."));
        if (isNaN(s2)) s5 = 0;
        document.getElementById("jahreszins").value = ((s5 / s4) * 365).toFixed(2);

        var s6 = parseFloat(document.getElementById("betrag").value.replace(",", "."));
        if (isNaN(s1)) s6 = 0;
        var s7 = parseFloat(document.getElementById("barzins").value.replace(",", "."));
        if (isNaN(s2)) s7 = 0;
        document.getElementById("zsgesamt").value =  ( s7 / s6 * 100).toFixed(2);


}

function clear()
{
document.my_calc.barzins.value="";
document.my_calc.timeshift.value="";
}

function korrektur()
{
clear_ausgabe();
if (document.my_calc.tagbeginn.value>tmax[document.my_calc.monatbeginn.selectedIndex])document.my_calc.tagbeginn.value=tmax[document.my_calc.monatbeginn.selectedIndex];
if (document.my_calc.tagende.value>tmax[document.my_calc.monatende.selectedIndex])document.my_calc.tagende.value=tmax[document.my_calc.monatende.selectedIndex];
if  ((document.my_calc.jahrbeginn.value%4) && (document. my_calc.monatbeginn.value=="02") && (document.my_calc.tagbeginn.value=="29")) document.my_calc.tagbeginn.value="28";
if  ((document.my_calc.jahrende.value%4) && (document.my_calc.monatende.value=="02") && (document.my_calc.tagende.value=="29")) document.my_calc.tagende.value="28";
}



</script>
<form name="my_calc" action="">

<div name="zeile1">
<table style="table-layout:fixed">
<tr>
<td width="15%">Betrag </td>
<td width="25%"><input name="betrag" type="text" size="12" maxlength="12" value="0,00" onclick="clear()"></td>
<td></td>
</tr>
<tr>
<td width="25%">Zins über Basiszins</td>
<td>
<input checked name="satz" type="radio" value="true" onclick="clear()"> 5 %  
<input name="satz" type="radio" value="false" onclick="clear()"> 8 %  
<input name="satz" type="radio" value="false" onclick="clear()"> 9 %  
<td></td>
</tr>
<tr><td> </td></tr>
<tr>
<td width="10%"><input name="satz" type="radio" value="false" onclick="clear()"> anderer Zins  </td>
<td width="25%"><input name="zssatz" type="text" value="Zinssatz" size="12" maxlength="8"></td>
<td></td>
</tr>

</table>
</div>

<div name="zeile2">
<table style="table-layout:fixed">
<tr>
<td width="15%">Zinsbeginn</td>
<td>
<select  name="tagbeginn" size="1"  onclick="clear()">
<option value="01" selected>1.</option>
<option value="02">2.</option>
<option value="03">3.</option>
<option value="04">4.</option>
<option value="05">5.</option>
<option value="06">6.</option>
<option value="07">7.</option>
<option value="08">8.</option>
<option value="09">9.</option>
<option value="10">10.</option>
<option value="11">11.</option>
<option value="12">12.</option>
<option value="13">13.</option>
<option value="14">14.</option>
<option value="15">15.</option>
<option value="16">16.</option>
<option value="17">17.</option>
<option value="18">18.</option>
<option value="19">19.</option>
<option value="20">20.</option>
<option value="21">21.</option>
<option value="22">22.</option>
<option value="23">23.</option>
<option value="24">24.</option>
<option value="25">25.</option>
<option value="26">26.</option>
<option value="27">27.</option>
<option value="28">28.</option>
<option value="29">29.</option>
<option value="30">30.</option>
<option value="31">31.</option>
</select>

<select  name="monatbeginn" size="1" onChange="korrektur()">
<option value="01" selected>Januar</option>
<option value="02">Februar</option>
<option value="03">März</option>
<option value="04">April</option>
<option value="05">Mai</option>
<option value="06">Juni</option>
<option value="07">Juli</option>
<option value="08">August</option>
<option value="09">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12">Dezember</option>
</select>

<select  name="jahrbeginn" size="1"  onclick="clear()">
<option value="2003">2003</option>
<option value="2004">2004</option>
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015" selected>2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
</select>
</td>
</tr>
<tr>
<td>Zahlungdatum</td>
<td>
<select  name="tagende" size="1"  onclick="clear()">
<option value="01">1.</option>
<option value="02">2.</option>
<option value="03">3.</option>
<option value="04">4.</option>
<option value="05">5.</option>
<option value="06">6.</option>
<option value="07">7.</option>
<option value="08">8.</option>
<option value="09">9.</option>
<option value="10">10.</option>
<option value="11">11.</option>
<option value="12">12.</option>
<option value="13">13.</option>
<option value="14">14.</option>
<option value="15">15.</option>
<option value="16">16.</option>
<option value="17">17.</option>
<option value="18">18.</option>
<option value="19">19.</option>
<option value="20">20.</option>
<option value="21">21.</option>
<option value="22">22.</option>
<option value="23">23.</option>
<option value="24">24.</option>
<option value="25">25.</option>
<option value="26">26.</option>
<option value="27">27.</option>
<option value="28">28.</option>
<option value="29">29.</option>
<option value="30">30.</option>
<option value="31" selected>31.</option>
</select>

<select  name="monatende" size="1"  onChange="korrektur()">
<option value="01">Januar</option>
<option value="02">Februar</option>
<option value="03">März</option>
<option value="04">April</option>
<option value="05">Mai</option>
<option value="06">Juni</option>
<option value="07">Juli</option>
<option value="08">August</option>
<option value="09">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12" selected>Dezember</option>
</select>
<select  name="jahrende" size="1"  onclick="clear()">
<option value="2003">2003</option>
<option value="2004">2004</option>
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015" selected>2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>

</select>
</td>
</tr>
</table>
</div>

<div name="zeile3">
<table style="table-layout:fixed">
<tr>
<td width="25%"> </td>
<td width="25%"><input type="button" value="Zinsen errechnen"  onclick="calculate()"></td>
<td> </td>
</tr>
</table>
</div>

<div name="ausgabe">
<table style="table-layout:fixed">
<tr>
<td style="center" width="33%">Tage  </td><td style="center" width="85%"><input type="text" name="timeshift" size="8" value="" readonly></td>
</tr>
<tr>
<td style="center" width="33%">Zinsen  </td><td style="center" width="85%"><input type="text" name="barzins" size="8" value="" readonly> Euro</td>
</tr>
<tr>
<td style="center" width="33%">Gesamtbetrag </td><td style="center" width="85%"><input type="text" width="75%" name="gesamt" size="8" value="" readonly> Euro</td>
</tr>

<!-- wird aus dem Kontext generiert -- Tageskennzahl 01.01. = Kennziffer Jahresbeginn. -- 01.07. Kennziffer Jahresmitte-->
<tr>
<td><input type="hidden" name="tageskennzahl1" size="20"> <input type="hidden" name="datumonatbeginn" size="40"></td>

</tr>
</table>

</form>
</div>

</body>
</html>
 
Zuletzt bearbeitet von einem Moderator:
Du solltest schon den Code so übernehmen, wie ich ihn geschrieben hab'... das dem riesen if Teil mit den Jahren fehlt bei dir einfach eine geschweifte schließende Klammer.
 
Ups........ (ja, ich schäme mich:D) ich habe das nun vollständig eingebaut, aber der verzehnfacht dann den Jahresbetrag, also bei 100 zu verzinsendes Kapital wirft er nach einem Jahr 1100 aus, anstatt 110. Auf jeden Fall erst mal vielen lieben Dank für Deine Hilfe. Ich poste das Script noch einmal hier, denn wahrscheinlich liegt der Fehler bei mir:)

Grüße L
Code:
if (document.my_calc.satz[3].checked){
        z=check(document.my_calc.zssatz.value);
        zs = 0;
        var endTime = Date2.getTime() + 1e7;
        for (var cDate = new Date(Date1.getTime()); cDate.getTime() <= endTime; cDate.setDate(cDate.getDate() + 1)){
                var year = cDate.getFullYear();
                var isLeap = year % 4 === 0 && year % 100 !== 0;
                zs += s*z / (365 + isLeap);
        }
}
else {
        zs=0
        for (i=ta;i<=te;i=i+8640){
                /*2003*/
                if (i>=104137560 && i<105701040)zs=zs+s*(1.97+z)/36500;
                if (i>=105701040 && i<107291160)zs=zs+s*(1.22+z)/36500;
                /*2004*/
                if (i>=107291160 && i<108863280)zs=zs+s*(1.14+z)/36600;
                if (i>=108863280 && i<110453400)zs=zs+s*(1.13+z)/36600;
                /*2005*/
                if (i>=110453400 && i<112016880)zs=zs+s*(1.21+z)/36500;
                if (i>=112016880 && i<113607000)zs=zs+s*(1.17+z)/36500;
                /*2006*/
                if (i>=113607000 && i<115170480)zs=zs+s*(1.37+z)/36500;
                if (i>=115170480 && i<116760600)zs=zs+s*(1.95+z)/36500;
                /*2007*/
                if (i>=116760600 && i<118324080)zs=zs+s*(2.70+z)/36500;
                if (i>=118324080 && i<119914200)zs=zs+s*(3.19+z)/36500;
                /*2008*/
                if (i>=119914200 && i<121486320)zs=zs+s*(3.32+z)/36600;
                if (i>=121486320 && i<123076440)zs=zs+s*(3.19+z)/36600;
                /*2009*/
                if (i>=123076440 && i<124639920)zs=zs+s*(1.62+z)/36500;
                if (i>=124639920 && i<126230040)zs=zs+s*(0.12+z)/36500;
                /*2010*/
                if (i>=126230040 && i<127793520)zs=zs+s*(0.12+z)/36500;
                if (i>=127793520 && i<129383640)zs=zs+s*(0.12+z)/36500;
                /*2011*/
                if (i>=129383640 && i<130947120)zs=zs+s*(0.12+z)/36500;
                if (i>=130947120 && i<132537240)zs=zs+s*(0.12+z)/36500;
                /*2012*/
                if (i>=132537240 && i<134109360)zs=zs+s*(0.12+z)/36600;
                if (i>=134109360 && i<135699480)zs=zs+s*(0.12+z)/36500;
                /*2013*/
                if (i>=135699480  && i<137262960)zs=zs+s*(-0.13+z)/36500;
                if (i>=137262960  && i<138853080)zs=zs+s*(-0.38+z)/36500;
                /*2014*/
                if (i>=138853080  && i<140407920)zs=zs+s*(-0.63+z)/36500;
                if (i>=140407920  && i<142006680)zs=zs+s*(-0.73+z)/36500;
                /*2015*/
                if (i>=142006680  && i<143561520)zs=zs+s*(-0.83+z)/36500;
                if (i>=143561520  && i<145160280)zs=zs+s*(-0.83+z)/36500;
                /*2016--<*/
                if (i>=145160280  && i<146732400)zs=zs+s*(0.12+z)/36600;
                if (i>=146732400  && i<148322520)zs=zs+s*(0.12+z)/36600;
                /*2017*/
                if (i>=148322520  && i<149886000)zs=zs+s*(0.12+z)/36500;
                if (i>=149886000  && i<151476120)zs=zs+s*(0.12+z)/36500;
                /*2018*/
                if (i>=151476120  && i<153039600)zs=zs+s*(0.12+z)/36500;
                if (i>=153039600  && i<154629720)zs=zs+s*(0.12+z)/36500;
                /*2019*/
                if (i>=154629720  && i<156193200)zs=zs+s*(0.12+z)/36500;
                if (i>=156193200  && i<160000000)zs=zs+s*(0.12+z)/36500;
        }
}

document.my_calc.zssatz.value=z;

document.my_calc.timeshift.value=Math.round(1+(te-ta-1000)/8640);
document.my_calc.barzins.value=zs.toFixed(2);
document.my_calc.tageskennzahl1.value=Date1.getTime()/10000;
document.my_calc.datumonatbeginn.value=Date1.toLocaleString();

        var s1 = parseFloat(document.getElementById("betrag").value.replace(",", "."));
        if (isNaN(s1)) s1 = 0;
        var s2 = parseFloat(document.getElementById("barzins").value.replace(",", "."));
        if (isNaN(s2)) s2 = 0;

        document.getElementById("gesamt").value = (s1 + s2).toFixed(2);


        var s4 = parseFloat(document.getElementById("timeshift").value.replace(",", "."));
        if (isNaN(s1)) s4 = 0;
        var s5 = parseFloat(document.getElementById("barzins").value.replace(",", "."));
        if (isNaN(s2)) s5 = 0;
        document.getElementById("jahreszins").value = ((s5 / s4) * 365).toFixed(2);

        var s6 = parseFloat(document.getElementById("betrag").value.replace(",", "."));
        if (isNaN(s1)) s6 = 0;
        var s7 = parseFloat(document.getElementById("barzins").value.replace(",", "."));
        if (isNaN(s2)) s7 = 0;
        document.getElementById("zsgesamt").value =  ( s7 / s6 * 100).toFixed(2);


}
 
Zuletzt bearbeitet von einem Moderator:
Ah... hatte da was falsch verstanden. Dachte, man soll in das Feld der Wert nicht in Prozent eingeben. Also 0.1 für eine 10%ige Verzinsung. Wenn man da in Prozenten eingeben soll, muss die eine Zeile zs += s*z / (365 + isLeap)/100; heißen.

Ich würde dann aber zur Sicherheit hinter das <input> noch ein "%" schreiben.

PS: Das wird nicht verzehnfacht. Es wurde einfach der hundertfache Zins berechnet.
 
Zurück
Oben