Berechnungen mit JavaScript
Dino-BBG
- html
- javascript
0 Matthias Apsel0 Kralle0 Rolf B0 encoder0 Gunnar Bittersmann- html
0 Rolf B
Hallo liebe Forumsmitglieder, 👋
ich bin derzeit dabei ein Projekt für mein Studium der Immobilienwirtschaft umzusetzen. Da ich mich in der Vergangenheit öfters mit HTML, CSS und JavaScript beschäftigt habe, kam ich auf die glorreiche Idee (ja, ich bereue es inzwischen 🐵) ein kleines Bewertungstool aufzubauen, welches anhand des Ertragswertverfahrens für die 50 größten Städte Deutschlands einen realistischen Wert der Immobilie ausspucken soll.
Nun zum Problem: Ich muss irgendwo einen Fehler im Hardcode haben, da mir meine JavaScript Function nur sinnlose Ergebnisse ausspuckt und ich vermute, dass es an der Berechnung des Vervielfältigers liegt. Daher kurz das Ertragswertverfahren zusammengefasst: Kurze Erörterung: Ich verwende das vereinfachte Ertragswertverfahren. Dabei wird der Jahresreinertrag (= Jahreskaltmiete - Bewirtschaftungskosten bzw. "BWK") mit einem Vervielfältiger "V" multipliziert, wobei "q" für den jeweiligen "Liegenschaftszinssatz + 1" steht und mit der "wirtschaftlichen Restnutzungsdauer" bzw. "RND" der Immobilie potenziert wird.
Die Formeln habe ich als Bild hinzugefügt, ist ja an sich selbsterklärend.
Ich habe folgenden Quellcode zusammengeschustert:
<div align="center">
<p> Bodenrichtwert (€/m²): </p>
<input type="text" id="bodenrichtwert">
<br />
<br />
<p> Wohnfläche in m²: </p>
<input type="text" id="wohnflaeche">
<br />
<br />
<p> Jährliche Bewirtschaftungskosten: </p>
<input type="text" id="bewirtschaftungskosten">
<br />
<br />
<p> Wirtschaftliche Restnutzungsdauer in Jahren: </p>
<input type="text" id="restnutzungsdauer">
<br />
<br />
<p> Wertminderung: </p>
<input type="text" id="wertminderung">
<br />
<br />
<input type="button" value="Wert berechnen" onClick="immowertklein ()">
<br />
<br />
<big><big>
<p> Immobilienwert: </p>
<input type="text" id="immobilienwert">
</big></big>
<script type="text/jscript">
function immowertklein ()
{
var brw = document.getElementById("bodenrichtwert").value;
var wfl = document.getElementById("wohnflaeche").value;
var bew = document.getElementById("bewirtschaftungskosten").value;
var rnd = document.getElementById("restnutzungsdauer").value;
var wer = document.getElementById("wertminderung").value;
var ree = 11.71 * 12 * wfl - bew;
var bod = brw * wfl;
var ver = Math.pow(1.029,rnd);
var fae = ver - 1;
var tig = ver * 0.29;
var iwe = ree * (fae / tig) + (bod / ver) - wer;
iwe = iwe.toFixed(2);
document.getElementById("immobilienwert").value=iwe;
}
</script>
</div>
Wie gesagt, die Ergebnisse hauen keinesfalls auch nur annähernd hin und ich bin schon seit Tagen verzweifelt am grübeln und Suchen. Habe bereits zwei mal neu angesetzt und allmählich verzweifle ich...
Daher danke ich vielmals für jedwede Hilfe.
Hallo Dino-BBG,
Wie gesagt, die Ergebnisse hauen keinesfalls auch nur annähernd hin und ich bin schon seit Tagen verzweifelt am grübeln und Suchen.
Da ist es hilfreich sich die (alle!) Zwischenergebnisse und Eingabewerte anzuschauen.
console.log("Zwischenergebnis")
Daher danke ich vielmals für jedwede Hilfe.
Allerdings ist auch dein HTML dringend überarbeitungswürdig, schon allein aus Gründen der Barrierefreiheit. Die Beschriftungen der input-Elemente müssen mit einem label-Element erfolgen. Der Immobilienwert wird ja nicht eingegeben, sondern ausgegeben. Das korrekte Element wäre also ein output-Element.
Die Gestaltung solltest du nicht mit veralteten Attributen wie align oder falsch verwendeten Elementen wie br regeln, sondern über CSS. Im Wiki solltest du auch da fündig werden. Zum JavaScript selbst können andere hier viel mehr beitragen.
Bis demnächst
Matthias
Moin,
nur mal so ein Gedanke:"Könnte es sein, das JS die Rechenregel nicht richtig umsetzt?" Also, das Du vielleicht ein paar mehr Klammern brauchst?
Nur so ein spontaner Gedanke.
Gruß HEiko
Hallo,
Also, das Du vielleicht ein paar mehr Klammern brauchst?
Das war auch mein 1. Gedanke, aber das Problem scheint dadurch umgangen worden zu sein, dass mit vielen Variablen gearbeitet wurde.
Wie siehst denn mit den Einheiten aus? Wenn man sich da vertut…
Gruß
Kalk
Hallo Dino-BBG,
ein paar Grundsatzhinweise zu JavaScript. Das Problem dürfte aber anderswo liegen, siehe weiter unter.
var
gibt es in JavaScript auch die Anweisung const
, mit der sich benannte Konstanten erstellen lassen. Bei der 12 würde ich keine Konstante erzeugen, bei 11,79 und 0,29 (lz
) schon, und statt 1,029 sollte dann 1 + lz
geschrieben werden.Und dann:
Aber ich habe einmal gegoogelt und das hier gefunden. Das kann ich Schritt für Schritt nachvollziehen und komme damit auf deine erste Formel. Die zweite Formel ergibt sich aus der ersten durch rein algebraische Umstellung und sollte daher den gleichen Wert liefern.
Was mir auffällt:
Rolf
Lieber Rolf, du hast die Lösung gefunden :-D
Der Liegenschaftszins betrug 2,9% und ich muss bei der Eingabe versehentlich anstelle von 0,029 mit 0,29 multipliziert haben :-)
VIELEN VIELEN DANK!!!
Zur Erörterung des Ertragswertvehrens:
Es ist tatsächlich sinnvoll bei Wohnungen in Mehrfamilienhäusern, worauf sich dieses Beispiel bezieht, den Bodenrichtwert aus der Bodenrichtwertkarte des regionalen Gutachterausschusses mit der Wohnfläche der zu bewertenden Wohnung zu multiplizieren und dieses Produkt wiederum mit der am Markt erzielbaren üblichen Miete (in diesem Fall laut Grundstücksmarktbericht von Aachen 11,71€/m²) zu multiplizieren und das ganze wiederum verzwölffachen, da der Jahresrohertrag ermittelt werden soll. Anschließend zieht man hiervon die jährlichen Bewirtschaftungskosten ab und erhält den Jahresreinertrag.
Die von dir angesprochene Problematik mit den Einfamilienhäusern ist durchaus vorhanden, denn schließlich würde man in diesem Fall so handeln, als wäre das gesamte Grundstück samt Garten vermietbare Wohnfläche, allerdings wendet man daher bei Einfamilienhäusern auch vorzugsweise das Sachwertverfahren an.
Um es kurz zu machen: Lieber Rolf, du bist der KLASSE und ich danke dir vielmals, denn ich habe diesen Fehler nunmehr 30 mal überlesen und wundere mich über meine eigene Dummheit :-D
Hallo Dino,
und wundere mich über meine eigene Dummheit
Warum soll es Dir anders gehen als uns? :)
Aber die Ursache für den Fehler ist, dass Du den LZ Prozentsatz direkt verrechnet hast statt ihn einzugeben oder als separate Konstante festzulegen. Dann wäre es Dir sicherlich sofort aufgefallen.
Mein Mathelehrer (Leibnitz hab ihn selig) meinte immer: Ein Beweis (oder hier: eine Berechnung) ist wie eine gute Salami. Je dünner die Scheiben, desto besser.
Rolf
Hallo Rolf,
und wundere mich über meine eigene Dummheit
Warum soll es Dir anders gehen als uns? :)
wie wahr ...
Mein Mathelehrer (Leibnitz hab ihn selig)
Leibnitz ... das war doch der mit den 52 Zähnen. 😉
meinte immer: Ein Beweis (oder hier: eine Berechnung) ist wie eine gute Salami. Je dünner die Scheiben, desto besser.
Bei der Salami bin ich nicht dieser Meinung. Eine Salamischeibe sollte schon so dick sein, dass man sie beim Draufbeißen auch deutlich spürt. Aufschnitt so dünn schneiden, dass man das Vaterunser durchpusten kann? Och nöö!
Live long and pros healthy,
Martin
@@Der Martin
Bei der Salami bin ich nicht dieser Meinung. Eine Salamischeibe sollte schon so dick sein, dass man sie beim Draufbeißen auch deutlich spürt. Aufschnitt so dünn schneiden, dass man das Vaterunser durchpusten kann? Och nöö!
Das S in MNS steht nicht für Salami. 😆
😷 LLAP
Hi,
Leibnitz ... das war doch der mit den 52 Zähnen. 😉
Ne, der mit den 52 Zähnen ist Stefan Raab 😉
cu,
Andreas a/k/a MudGuard
@@MudGuard
Hi,
Leibnitz ... das war doch der mit den 52 Zähnen. 😉
Ne, der mit den 52 Zähnen ist Stefan Raab 😉
Da fällt mir gleich der wieder ein:
Was ist das: hat 4 Beine und 44 Zähne?
Ein Krokodil.
Und was ist das: hat 44 Beine und 4 Zähne?
Das Politbüro des ZK der SED.
😷 LLAP
Hallo
Leibnitz ... das war doch der mit den 52 Zähnen. 😉
Ne, der mit den 52 Zähnen ist Stefan Raab 😉
Da fällt mir gleich der wieder ein:
Was ist das: hat 4 Beine und 44 Zähne?
Ein Krokodil.
Und was ist das: hat 44 Beine und 4 Zähne?
Das Politbüro des ZK der SED.
Nicht ganz so politisch: Was hat fünf Beine und zwei Ohren?
Tschö, Auge
Hi,
Leibnitz ... das war doch der mit den 52 Zähnen. 😉
Ne, der mit den 52 Zähnen ist Stefan Raab 😉
Da fällt mir gleich der wieder ein:
Was ist das: hat 4 Beine und 44 Zähne?
Ein Krokodil.
Und was ist das: hat 44 Beine und 4 Zähne?
Das Politbüro des ZK der SED.Nicht ganz so politisch: Was hat fünf Beine und zwei Ohren?
fast jedes männliche Säugetier?
cu,
Andreas a/k/a MudGuard
Hallo
Leibnitz ... das war doch der mit den 52 Zähnen. 😉
Ne, der mit den 52 Zähnen ist Stefan Raab 😉
Da fällt mir gleich der wieder ein:
Was ist das: hat 4 Beine und 44 Zähne?
Ein Krokodil.
Und was ist das: hat 44 Beine und 4 Zähne?
Das Politbüro des ZK der SED.Nicht ganz so politisch: Was hat fünf Beine und zwei Ohren?
fast jedes männliche Säugetier?
Nee, das ist geschlechtsunspezifisch.
Tschö, Auge
Hi,
Nicht ganz so politisch: Was hat fünf Beine und zwei Ohren?
der Mensch? - Rechtes Bein, linkes Bein, Nasenbein, Steißbein, Brustbein?
Verdammt. Ich hab die Schlüsselbeine völlig vergessen.
Live long and pros healthy,
Martin
Hallo Auge,
du willst jetzt hoffentlich keine geschmacklosen Scherze über Kampfhunde machen?
Rolf
Hallo
du willst jetzt hoffentlich keine geschmacklosen Scherze über Kampfhunde machen?
Da ein Dobermann auf einem Spielplatz kein Kampfhund ist, nein.
Tschö, Auge
Hallo Auge,
wenn er 5 Beine hat, würde ich darüber nochmal nachdenken wollen. Und hoffentlich ist's ein Puppenbein.
Rolf
Aufschnitt so dünn schneiden, dass man das Vaterunser durchpusten kann?
Stichwort: Homöopathie, besonders wertvoll beim Abnehmen der Körpermasse.
Hallo,
Aufschnitt so dünn schneiden, dass man das Vaterunser durchpusten kann?
Stichwort: Homöopathie
im kulinarischen Bereich auch Carpaccio.
Schön anzuschauen, aber so wenig Substanz, dass man es nicht einmal schmeckt.
besonders wertvoll beim Abnehmen der Körpermasse.
Wenn man das nicht durch eine erhöhte Zufuhr anderer Ingredienzen ausgleicht.
Live long and pros healthy,
Martin
Hallo Dino,
ich bin versehentlich auf den Button "–1" gekommen und wollte dich — alle herhören — keineswegs negativ bewerten!
Bem. 1: Ich weiß nicht ob bzw. wie der Bewertende seine Bewertung korrigieren kann.
Bem. 2: Ich hasse das Tippen auf Touch-Screens...
Viele Grüße und sorry!
ottogal
@@ottogal
Ich weiß nicht ob bzw. wie der Bewertende seine Bewertung korrigieren kann.
Nochmal auf − drücken sollte die Bewertung rückgängig machen.
😷 LLAP
Hallo Rolf,
- Numerische Eingaben sollte man vor der Verarbeitung mit parseInt oder parseFloat in Zahlen umwandeln. Und man sollte sie eigentlich auch vorher validieren. Ist das eine Zahl, ist sie positiv?
ich nehme da <input type="number">
und valueAsNumber
. Danach prüfe ich noch mit isNaN
Gruß
Jürgen
Um dir beim suchen zu helfen, wäre es gut wenn du ein Beispiel angibst.
Was gibst du ein, was kommt bei dir raus und was hast du erwartet? Am besten mit Zwischenschritten.
@@Dino-BBG
Ich habe folgenden Quellcode zusammengeschustert:
So sieht er auch aus.
<div align="center"> <p> Bodenrichtwert (€/m²): </p> <input type="text" id="bodenrichtwert">
Das Eingabefeld hat keine Beschriftung. Da ist zwar was, was in dessen Nähe steht; verknüft ist das aber nicht.
So geht’s:
<div align="center">
<p><label for="bodenrichtwert">Bodenrichtwert (€/m²):</label></p>
<input type="text" id="bodenrichtwert">
So als Quickfix. Das <p>
-Element brauchst du nicht; du kannst auch das label
entsprechend stylen (u.a. display: block
).
Bei den anderen Eingabefeldern entsprechend. Der Wert des for
-Attributs muss mit der ID des Eingabefelds übereinstimmen.
Wichtig insbesondere für Nutzer (m/w/d), die die Seite nicht visuell wahrnehmen. S.a. HTML/Formulare/label
Leider haben sich hier alle auf das JavaScript gestürzt ohne auf die Grundlagen einzugehen.
Eine Klasse "center"
sollte es auch nicht geben. Das ist präsentationsbezogenes Markup; dann könntest du auch gleich das <center>
-Element nehmen.
<br /> <br />
Du Henry, was ist für ein Geräusch?
Abstände machst du mit CSS: margin
.
😷 LLAP
Hallo Gunnar,
Leider haben sich hier alle auf das JavaScript gestürzt ohne auf die Grundlagen einzugehen.
Das sah ich anders - wenn das auch nicht so ausführlich war wie bei Dir jetzt.
Darum habe ich mich dann auf die Businesslogik gestürzt. War schon umfangreich genug.
Rolf
@@Rolf B
Huch, ich könnt schwören, eben war Matthias’ Posting noch nicht da. 😉
😷 LLAP
Hallo Gunnar,
das kommt davon wenn jemand mit Salami um sich schmeißt und sich alle drauf stürzen...
Rolf