Tach!
Abgesehen vom eigentlichen Problem, das bereits in den anderen Antworten behandelt wurde, hab ich generelle Anmerkungen.
var a; // Akku-rest var b; // Spannung var c; // Akkukapazitaet var d; // Leistung var y; // Akkuhaltbarkeit Ergebis Gesamt var z; // Akkuhaltbarkeit Ergebis Stunden var x; // Akkuhaltbarkeit Ergebis Minuten
Dokumentation ist wichtig, damit man versteht, wofür etwas da ist. Aber wir sind heutzutage nicht mehr in der Zeit von Papier und Handschrift, wo sich die Gelehrten Buchstaben ausgedacht haben, um nicht so viel schreiben zu müssen. Man kann seine Variablen mit sprechenden Namen belegen, anstatt fortlaufende Einzelbuchstaben zu verwenden. Rezepte als eine Auflistung von Anweisungen lesen sich flüssiger als eine Formelsammlung. Das ist wichtiger als eingesparte Tipparbeit, die einem heutzutage IDEs und teilweise auch weniger umfangreiche Editoren abnehmen.
if (isNaN(parseFloat(a)) || isNaN(parseFloat(b)) || isNaN(parseFloat(c)) || isNaN(parseFloat(d))) { z.value = "Fehlende Angaben!"; } else { y.value = parseFloat(c) * parseFloat(b) / parseFloat(d) * (1-parseFloat(a) / 100) * 60 ;
Das Umwandeln von Eingabewerten in für das Programm brauchbare Daten - sprich hier: Die Zahlenstrings aus den Eingabefeldern in Zahlen zu konvertieren gehört zum Teil der Eingabedatenbehandlung und sollte auch dort erfolgen. Das folgt dem EVA-Prinzip, Eingabe-Verarbeitung-Ausgabe. Das heißt, das Konvertieren mit parseFloat() sollte einmalig erfolgen und nicht einmal zum prüfen und dann nochmal zum eigentlichen Rechnen. Man kann nämlich dann auch mal dahergehen, und die eigentliche Berechung in eine Funktion kapseln, die sich lediglich darum kümmert und nicht noch Nebenaufgaben wie Argumentkonvertierung und -prüfung vornimmt.
Die Variable Z soll die Stunden ausgeben und die Variable X soll die Minuten ausgeben. Soll Beispil: 0 Stunden und 36 Minuten, bei mir wird ausgegeben: 1 Stunde und -24 Minuten. Das wird auch ausgegeben aber nicht richtig: manchmal bekomme ich negative Zeilen. (Siehe Screenchot)
Was mache ich falsch? Bitte um Hilfe!
dedlfix.