Wie kann ich mit Javascript die Miete berechnen?

Hallo! Ich verzweifle gerade daran, mit Javascript die Miete pro Tag für meine angehende Notebookvermietung zu berechnen.
Auf meiner Website gibt man einfach die Zahl der Tage ein, die man mieten will - javascript gibt unten sofort den Wert in EUR aus. Das hat jedenfalls mit einer einfachen Formel geklappt. Leider aber nicht mit der hier: Mietpreis pro Tag=
765.86/( Anz.Miettage + 0.45*(731.0-Anz.Miettage))
*(1.0+(4.05*0.9763^Anz.Miettage))) + 4.0/Anz.Miettage;

Setzt man eine 1 für Anzahl Miettage ein, so kommt in Excel 15,51 raus. Das stimmt auch. Im Javascript unten, das ich soweit entworfen habe, kommt nur Quatsch raus. Ich habe auch gemerkt, dass ich nicht mal sowas wie var x= Feld + Feld rechnen kann… irgendwas stimmt da gar nicht!!

Mietdauer in Tagen:
€/Tag inkl. MwSt. und Versand oder Bringservice im Rhein-Main-Gebiet
// <![CDATA[
function PruefeInhalt (Feld) {

var x = 765.86/(Feld+0.45*(731.0-Feld))*
(1.0+(4.05*Math.pow(0.9763,Anz.Miettage))) + 4.0/Feld;

document.getElementById(„Preis“).innerHTML = x.toFixed(2) + " €/Tag inkl. MwSt. und Versand oder Bringservice im Rhein-Main-Gebiet";
return false;
}
// ]]>

Kann mir jemand ein funktionierendes Script geben?
Beispiel auf meiner Webseite(noch mit sinnloser Formel): (rechts oben)
http://leih-notebook.de/index.php?option=com_content…

PS: Wenn ich statt „Feld“ in javascript einfach z.B. den Wert „1“ einsetzte, kommt auch das richtige raus. Was ist da mit der Variable los???

Daaaaaaaaaaaannnkkkkeeeeeeeee

Wie du am „type“ siehst bekommst du einen Text, den musst du zuerst in eine Zahl wandeln. Versuch mal „parseFloat“ für eine Kommazahl. Damit sollte es klappen.
Und es steht statt „Feld“ nochmal „Anz.Miettage“ drin

Viel Erfolg.

Kim

Nabend,

das Problem ist das „Feld“ keine Zahl sondern ein String ist. Da Javascript nicht Typsicher ist, versucht es eben irgendetwas daraus zu machen wenn du „1“ + 1 oder 2 - „1“ rechnest.

Bei Subtraktion fällt das nicht auf, da man Strings nicht subtrahieren kann wird eine Zahl draus gemacht.

Bei der Addidition tritt dann das Problem auf das du String + Zahl rechnest. Da Strings für JavaScript wichtiger sind als Zahlen(warum auch immer), wandelt es die Zahl hinten in einen String um.

In deinem Fall wäre also wenn Feld = „1“

(Feld+0.45*(731.0-Feld)) nicht 1 + 328,5 = 329,5
sondern
(Feld+0.45*(731.0-Feld)) gleich „1“ + 328,5 = 1328,5.

Du musst also Feld vorher umwandeln:

var feldAlsZahl = parseInt(Feld);
var x = (feldAlsZahl +0.45*(731.0-feldAlsZahl ));

Für Dezimalzahlen gibt es dann noch parseFloat() (z.B. parseFloat(„10.3425“)).

Bei JavaScript also immer darauf achten welche Typen von Variablen man gerade vor sich hat. Man sieht es ja leider nicht auf den ersten Blick.

probiers doch mal damit:

// <![CDATA[
function PruefeInhalt(Feld) {
var x = 765.86/(Feld+0.45*(731.0-Feld))*(1.0+(4.05*Math.pow(0.9763,Feld))) + 4.0/Feld;
x=x.toFixed(2)
if (isNaN(x)) x=0;
document.getElementById(„Preis“).innerHTML = x + " €/Tag inkl. MwSt. und Versand oder Bringservice im Rhein-Main-Gebiet";
return true;
}

Mietdauer in Tagen: 0 €/Tag inkl. MwSt. und Versand oder Bringservice im Rhein-Main-Gebiet

grüße

Vielen vielen Dank! Das funktioniert super und Du / ihr alle habt gerade einem Ahnungslosen den Tag gerettet!!!

Hallo! Ich verzweifle gerade daran, mit Javascript die

Miete

pro Tag für meine angehende Notebookvermietung zu

berechnen.
Ebenfalls hallo. Wem ging das nicht schon das ein oder
andere Mal so? :wink:

Auf meiner Website gibt man einfach die Zahl der Tage

ein, die

man mieten will - javascript gibt unten sofort den

Wert in EUR

aus. Das hat jedenfalls mit einer einfachen Formel

geklappt.
Das ist doch schonmal was.

Leider aber nicht mit der hier: Mietpreis pro Tag=
765.86/( Anz.Miettage + 0.45*(731.0-Anz.Miettage))
*(1.0+(4.05*0.9763^Anz.Miettage))) +

4.0/Anz.Miettage;
Nun, vielleicht hat diese ja schon einen Denkfehler?
Wie genau soll sich denn der Mietpreis berechnen? (Die
Formel ist leider nicht selbsterklärend.)
((Könnte es beispielsweise sein, dass 0.45 nicht
stimmt,
sondern dort 0.4*5 stehen sollte? Oder es statt 4.05
0.45
heißen sollte? Nur um mal blindlings
draufloszuraten…))
(((Und muss alles in einer Formel sein? Manchmal hilft
schon das Zerlegen einer langen Formel um den Fehler zu
finden.)))

Setzt man eine 1 für Anzahl Miettage ein, …

Wie sieht es mit anderen Werten aus? Klappt es da auch?
Denn 1 ist generell kein guter Prüfwert. Null schon
eher.
Und NUL. Sowie 3, 5 und 10, da man hier gut im Kopf
nach-
rechnen kann.

Mietdauer in Tagen:
€/Tag inkl. MwSt. und

Versand

oder Bringservice im Rhein-Main-Gebiet

Sieht auf den ersten Blick unverdächtig aus.

// <![CDATA[
function PruefeInhalt (Feld) {

var x = 765.86/(Feld+0.45*(731.0-Feld))*
(1.0+(4.05*Math.pow(0.9763,Anz.Miettage))) +
4.0/Feld;

Wo kommt hier „Anz.Miettage“ her? Sollte es da nicht
auch Feld heißen?

document.getElementById(„Preis“).innerHTML =

x.toFixed(2) +

" €/Tag inkl. MwSt. und Versand oder Bringservice im
Rhein-Main-Gebiet";
return false;
}
// ]]>

Mehr fällt mir spontan nicht auf.

Kann mir jemand ein funktionierendes Script geben?

Dafür fehlt mir momentan leider die Zeit. Sorry.

Ich hoffe ich konnte helfen, oder zumindest einen
Ansatz liefern.
Bin im Augenblick schon ziemlich müde. Ansonsten ruhig
nochmal melden…

gruß ghostdog21

Du hast das Problem bereits gelöst, oder? Auf der Seite
scheint es ordentlich zu funktionieren.

Vermutlich hattest du lediglich vergessen, den Value des
Textfeldes auszulesen? Stimmt das?

Oli

Hallo,

wie ich bei Klicken deines Links sehen konnte, scheint dein Script mittlerweile zu funktionieren.
Daher bin ich wohl zu spät…

Alles Gute

Hallo, ich war im Urlaub.
Besteht das Problem noch?

Bin lange nicht online gewesen, hoffe es hat sich geklärt! Gruß Jens