Verschachtelte Schleifen
SchmaiDaiChai
- javascript
Hallo zusammen,
kann mir irgend jemand erklären warum diese if-else Anweisung nicht funktionier, bzw warum es nicht durchläuft?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>Gehzeit Rechner ;-)</title>
<script type="text/javascript">
<!--
function ZeitRechnen(Stunden, Minuten) {
var ArbZeit = 480; //Reguläre Arbeitszeit
var StartStd = parseInt(Stunden) *60; //Umrechnen der Stunden in Minuten
var StartMin = parseInt(Minuten) ; //Eingegebene Minuten + 20 Min
var ExtraMin = StartMin + 20;
if (StartStd >= 540 && StartMin >= 30 )
{
alert("Sie sind nicht mehr in der Kernzeit!!!)
}
else
{
alert("1");
if (ExtraMin <60 ) {
var StdSollzeit = ArbZeit + StartStd; //Gesamte Arbeitsstunden zusammen gerechnet
var StdSollzeit2 = StdSollzeit/60; //Rechnung: Minuten in Stunden
var Komplett = StdSollzeit2 + "." + ExtraMin; //Rechnung: der Gehzeit
document.StartZeitEingabe.EndZeitFeld.value = Komplett; //Übergabe des wertes an das Ausgabe Formular
}
else {
var pZeit = ExtraMin - 60;
var StdSollzeit = ArbZeit + StartStd; //Gesamte Arbeitsstunden zusammen gerechnet
var StdSollzeit2 = StdSollzeit/60 //Rechnung: Minuten in Stunden
if (pZeit <10) {
var Komplett = StdSollzeit2+1 + ".0" + pZeit; //Rechnung: der Gehzeit
document.StartZeitEingabe.EndZeitFeld.value = Komplett; //Übergabe des wertes an das Ausgabe Formular
}
else {
var Komplett = StdSollzeit2+1 + "." + pZeit; //Rechnung: der Gehzeit
document.StartZeitEingabe.EndZeitFeld.value = Komplett; //Übergabe des wertes an das Ausgabe Formular
}
}
}
}
//-->
</script>
</head>
<body>
<form name="StartZeitEingabe" action="">
<pre>
Anfangs Uhrzeit
<p>Stunden: <input type="text" name="eingStunden" /></p>
<p>Minuten: <input type="text" name="eingMinuten" /></p>
</pre>
<input type="button" value="Endzeit Ausrechnen"
onClick="ZeitRechnen(document.StartZeitEingabe.eingStunden.value, document.StartZeitEingabe.eingMinuten.value);"/>
<!-- onClick="XY(document.StartZeitEingabe.ZeitEingabe.value)"/> //-->
<pre>
Sie dürfen um: <input type="text" name="EndZeitFeld" />Uhr gehen.
</pre>
</form>
</body>
</html>
gruß Schmaid
Hallo SchmaiDaiChai,
Hallo zusammen,
kann mir irgend jemand erklären warum diese if-else Anweisung nicht funktionier, bzw warum es nicht durchläuft?
Ich hab das Script nun nicht auseinanderklamüsert, aber mir ist auf Anhieb aufgefallen, daß du zu dem if-Block 2! else Anweisungen hast.
richtig wäre imho:
if-Block
else if-Block
else (wird ausgeführt, wenn beide vorhergehende Bedingungen nicht zutreffen)
Gruß
Kurt
Hi KD-one,
Ich hab das Script nun nicht auseinanderklamüsert, aber mir ist auf Anhieb aufgefallen, daß du zu dem if-Block 2! else Anweisungen hast.
Ich weiß nicht welche du meinst? Die sind doch ineinander verschachtelt wenn du genau guckst.
Gruß Schmaid
Hallo SchmaiDaiChai,
Ich weiß nicht welche du meinst? Die sind doch ineinander verschachtelt wenn du genau guckst.
Ja, natürlich.
Aufgrund deiner unterschiedlichen Schreibweise bei den Klammerungen habe ich eine if-Bedingung übersehen und deshalb angenommen, du hättest hier einen Fehler.
Allzuviel Zeit hatte ich auch nicht. ;-)
Du solltest dir eine einheitliche Schreibweise angewöhnen, damit tust du dir selbst, und allen anderen einen Gefallen, weil der Code einfach übersichtlicher wird.
Gruß
Kurt
Hi Schmaid!
var StdSollzeit2 = StdSollzeit/60 //Rechnung: Minuten in Stunden
î-------Hier fehlt auf jeden Fall ein Semikolon.
Auch ich bin ansonsten zu faul, mir das alles reinzuziehen.
Probier halt mal aus, wie weit das Läuft (else auskommentieren, alerts setzen...)
Viel Spass,
Richard
yo,
alert("Sie sind nicht mehr in der Kernzeit!!!)
auch hier fehlt meiner meinung nach ein semikolon.
Ilja
Hallo,
kann mir irgend jemand erklären warum diese if-else Anweisung nicht funktionier, bzw warum es nicht durchläuft?
Und welche der folgenden if-else Anweisungen meinst Du?
Du weißt, dass die Fehlerbeschreibung "es funktioniert nicht" einem potentiellen Helfer nicht weiterhilft.
if (StartStd >= 540 && StartMin >= 30 )
{
}
else
{
if (ExtraMin <60 ) {
}
else {
if (pZeit <10) {
}
else {
}
}
}
}
Du solltest dir angewöhnen eine einheitliche Einrückung und Plazierung der { } in deinen Scripten zu verwenden.
Grüße,
Jochen
kann mir irgend jemand erklären warum diese if-else Anweisung nicht funktionier, bzw warum es nicht durchläuft?
Erstmal, if-else Bedingungen sind keine Schleifen.
Aber an deinem Code kann ich erstmal keinen Fehler finden, was sagt den die JS Konsole von Mozilla - Fehlermeldungen? Warnungen?
Alles in allem ist mein erster Eindruck das die Rechnungen bzw. Bedingungen unnötig komplex sind. Um mit Zeiten zu rechnen ist es immer sinnvoll diese in eine Zahl umzuwandeln und damit zu rechnen, als umständlich mit Minuten und Stunden.
Struppi.
Hi,
if (StartStd >= 540 && StartMin >= 30 )
{
alert("Sie sind nicht mehr in der Kernzeit!!!)
Du solltest die Minuten und Stunden summieren und mit der Summe arbeiten.
So hast Du das Problem, daß z.B. 9:31 Uhr als nicht mehr in der Kernzeit gerechnet wird, 10:01 dagegen schon (da nur eine der beiden Und-Verknüpften Bedingungen zutrifft).
cu,
Andreas