Hallo,
ich habe mich um eine Ausbildung beworben und habe vom Unternehmen 3 Aufgaben zum lösen erhalten um meine Qualitäten zu prüfen.
Mein derzeitiger Entwicklungsstand ist das ich einen Countdown habe der von body onload gestartet wird und bis 0 läuft. Als nächstes wollte ich das so Umstellen, dass ich ein Eingabefeld mache wo ich eine Zahl reinschreibe und der Countdown dann auf diese Minutenanzahl gesetzt wird, sobald ich auf einen Startbutton klicke. Dazu kam ich aber garnicht.
Funktionierender Countdown 5 Sekunden:
Statt onload per Button starten:
Als nächstes wollte ich den onload rausnehmen und "clock()" durch einen Button starten:
Änderung: onload raus, button mit onclick rein.
Resultat: Ohne funktion
Countdown resetten:
Dann hab ich mir gedacht brauche auch ne funktion um den countdown auf eine neue Zeit zurückzusetzen. Hier z.b. 10 Sekunden. Hier ist die ausführung wieder per onload, der Button ruft dann die Funktion zum setzen einer neuen Zeit auf. Meiner logik zufolge müsste das doch zur Laufzeit einfach zu ändern sein. Jedoch fängt der Countdown immer wieder bei 5 Sekunden an zu zählen und nicht bei 10. Er fängt also neu an zu zählen aber eben nicht beim Wunschwert.
Änderung: onload wieder rein, button verlinkt zu start(), funktion start() hinzugefügt zum neusetzen des countdown
Resultat: funktioniert nur halb
Per Button starten und resetten:
Schlussendlich muss ich das ganze per Buttonklick starten können und dabei soll der Countdown neu gesetzt werden. Also hier beides zusammen:
Änderung: onload raus, button wie gehabt, start() um funktionaufruf von clock() erweitert
Resultat: ohne funktion
Schlussendlich hänge ich hier seid Stunden an diesem pissel-Problem, obwohl ich wohl noch viel wichtigere Probleme haben werde aber ich komme nicht weiter, weil es hier schon nicht funktioniert.
Ich habe keine Idee woran es liegt, dass
1) die Funktion clock nur dann richtig arbeitet, wenn sie von onload aufgerufen wird
und
2) es nicht möglich ist den Wert von compDat zu ändern sodass er ab 10 Sekunden runterzählt. Er ändert ihn aber! Jedoch auf 5 Sekunden in der Zukunft, statt der angegebenen 10 Sekunden in der Zukunft.
Danke - Enomine
ich habe mich um eine Ausbildung beworben und habe vom Unternehmen 3 Aufgaben zum lösen erhalten um meine Qualitäten zu prüfen.
1. Pomodoro Uhr
· Erstellen Sie unter Verwendung von HTML5 und JavaScript eine einfache Web Site, mit deren Hilfe die Funktion eines Pomodoro Timers abgebildet werden kann.
· Die Zeit bis zum Ablaufen des Timers soll in Minuten einstellbar sein. Die verbleibende Zeit bis zum Alarm soll jederzeit auf der Seite sichtbar sein.
· Nach Ablauf der Zeit ertönt ein Signal
Mein derzeitiger Entwicklungsstand ist das ich einen Countdown habe der von body onload gestartet wird und bis 0 läuft. Als nächstes wollte ich das so Umstellen, dass ich ein Eingabefeld mache wo ich eine Zahl reinschreibe und der Countdown dann auf diese Minutenanzahl gesetzt wird, sobald ich auf einen Startbutton klicke. Dazu kam ich aber garnicht.
Funktionierender Countdown 5 Sekunden:
HTML:
<html>
<BODY TEXT="#FFFFFF" LINK="#FFFFFF" VLINK="#999999" ALINK="#00FF00" BGCOLOR="#000000" onload="clock()">
<Center>
<script>
var diffMonths=-1, diffDays=-1, diffHours=-1, diffMins=-1, diffSecs=-1
compDat = new Date(new Date().getTime()+5000)
var msPerMonth = 31 * 24 * 60 * 60 * 1000
var msPerDay = 24 * 60 * 60 * 1000
var msPerHour = 60 * 60 * 1000
var msPerMin = 60 * 1000
var msPerSec = 1000
var work = true
function clock(){
var today = new Date()
var changeD = diffDays
var changeH = diffHours
var changeMin = diffMins
var changeSec = diffSecs
var diffMs = compDat.getTime() - today.getTime()
diffDays = Math.floor(diffMs / msPerDay)
diffMs -= diffDays * msPerDay
diffHours = Math.floor(diffMs / msPerHour)
diffMs -= diffHours * msPerHour
diffMins = Math.floor(diffMs / msPerMin)
diffMs -= diffMins * msPerMin
diffSecs = Math.floor(diffMs / msPerSec)
diffMs -= diffSecs * msPerSec
if(changeD!=diffDays) document.forms[0].days.value=diffDays
if(changeH!=diffHours) document.forms[0].hours.value=diffHours
if(changeMin!=diffMins) document.forms[0].mins.value=diffMins
if(changeSec!=diffSecs) document.forms[0].secs.value=diffSecs
document.forms[0].millis.value=diffMs
if (work == true) {
if (work && diffDays > 0 || diffHours > 0 || diffMins > 0 || diffSecs > 0 || diffMs > 136) {
timerID = setTimeout("clock()",111)
} else {
work = false;
timerID = setTimeout("clock()",diffMs-25);
}
} else {
alert('beendet');
}
}
</SCRIPT>
<FORM><B><FONT FACE="Arial,Helvetica" SIZE="1">Noch
<input type="text" name="days" size="2"> Tage
<input type="text" name="hours" size="2"> Stunden
<input type="text" name="mins" size="2"> Minuten
<input type="text" name="secs" size="2"> Sekunden
<input type="text" name="millis" size="2"> Millisekunden bis zum Ende der Arbeitsperiode
<br><br><br>
</FONT></B>
</FORM>
</CENTER>
</BODY>
</HTML>
Statt onload per Button starten:
Als nächstes wollte ich den onload rausnehmen und "clock()" durch einen Button starten:
Änderung: onload raus, button mit onclick rein.
Resultat: Ohne funktion
HTML:
<html>
<BODY TEXT="#FFFFFF" LINK="#FFFFFF" VLINK="#999999" ALINK="#00FF00" BGCOLOR="#000000" onload="">
<Center>
<script>
var diffMonths=-1, diffDays=-1, diffHours=-1, diffMins=-1, diffSecs=-1
compDat = new Date(new Date().getTime()+5000)
var msPerMonth = 31 * 24 * 60 * 60 * 1000
var msPerDay = 24 * 60 * 60 * 1000
var msPerHour = 60 * 60 * 1000
var msPerMin = 60 * 1000
var msPerSec = 1000
var work = true
function clock(){
var today = new Date()
var changeD = diffDays
var changeH = diffHours
var changeMin = diffMins
var changeSec = diffSecs
var diffMs = compDat.getTime() - today.getTime()
diffDays = Math.floor(diffMs / msPerDay)
diffMs -= diffDays * msPerDay
diffHours = Math.floor(diffMs / msPerHour)
diffMs -= diffHours * msPerHour
diffMins = Math.floor(diffMs / msPerMin)
diffMs -= diffMins * msPerMin
diffSecs = Math.floor(diffMs / msPerSec)
diffMs -= diffSecs * msPerSec
if(changeD!=diffDays) document.forms[0].days.value=diffDays
if(changeH!=diffHours) document.forms[0].hours.value=diffHours
if(changeMin!=diffMins) document.forms[0].mins.value=diffMins
if(changeSec!=diffSecs) document.forms[0].secs.value=diffSecs
document.forms[0].millis.value=diffMs
if (work == true) {
if (work && diffDays > 0 || diffHours > 0 || diffMins > 0 || diffSecs > 0 || diffMs > 136) {
timerID = setTimeout("clock()",111)
} else {
work = false;
timerID = setTimeout("clock()",diffMs-25);
}
} else {
alert('beendet');
}
}
</SCRIPT>
<FORM><B><FONT FACE="Arial,Helvetica" SIZE="1">Noch
<input type="text" name="days" size="2"> Tage
<input type="text" name="hours" size="2"> Stunden
<input type="text" name="mins" size="2"> Minuten
<input type="text" name="secs" size="2"> Sekunden
<input type="text" name="millis" size="2"> Millisekunden bis zum Ende der Arbeitsperiode
<button onclick="clock();">los</button>
<br><br><br>
</FONT></B>
</FORM>
</CENTER>
</BODY>
</HTML>
Countdown resetten:
Dann hab ich mir gedacht brauche auch ne funktion um den countdown auf eine neue Zeit zurückzusetzen. Hier z.b. 10 Sekunden. Hier ist die ausführung wieder per onload, der Button ruft dann die Funktion zum setzen einer neuen Zeit auf. Meiner logik zufolge müsste das doch zur Laufzeit einfach zu ändern sein. Jedoch fängt der Countdown immer wieder bei 5 Sekunden an zu zählen und nicht bei 10. Er fängt also neu an zu zählen aber eben nicht beim Wunschwert.
Änderung: onload wieder rein, button verlinkt zu start(), funktion start() hinzugefügt zum neusetzen des countdown
Resultat: funktioniert nur halb
HTML:
<html>
<BODY TEXT="#FFFFFF" LINK="#FFFFFF" VLINK="#999999" ALINK="#00FF00" BGCOLOR="#000000" onload="clock()">
<Center>
<script>
var diffMonths=-1, diffDays=-1, diffHours=-1, diffMins=-1, diffSecs=-1
compDat = new Date(new Date().getTime()+5000)
var msPerMonth = 31 * 24 * 60 * 60 * 1000
var msPerDay = 24 * 60 * 60 * 1000
var msPerHour = 60 * 60 * 1000
var msPerMin = 60 * 1000
var msPerSec = 1000
var work = true
function start() {
work = true
compDat.setTime(new Date().getTime()+10000)
}
function clock(){
var today = new Date()
var changeD = diffDays
var changeH = diffHours
var changeMin = diffMins
var changeSec = diffSecs
var diffMs = compDat.getTime() - today.getTime()
diffDays = Math.floor(diffMs / msPerDay)
diffMs -= diffDays * msPerDay
diffHours = Math.floor(diffMs / msPerHour)
diffMs -= diffHours * msPerHour
diffMins = Math.floor(diffMs / msPerMin)
diffMs -= diffMins * msPerMin
diffSecs = Math.floor(diffMs / msPerSec)
diffMs -= diffSecs * msPerSec
if(changeD!=diffDays) document.forms[0].days.value=diffDays
if(changeH!=diffHours) document.forms[0].hours.value=diffHours
if(changeMin!=diffMins) document.forms[0].mins.value=diffMins
if(changeSec!=diffSecs) document.forms[0].secs.value=diffSecs
document.forms[0].millis.value=diffMs
if (work == true) {
if (work && diffDays > 0 || diffHours > 0 || diffMins > 0 || diffSecs > 0 || diffMs > 136) {
timerID = setTimeout("clock()",111)
} else {
work = false;
timerID = setTimeout("clock()",diffMs-25);
}
} else {
alert('beendet');
}
}
</SCRIPT>
<FORM><B><FONT FACE="Arial,Helvetica" SIZE="1">Noch
<input type="text" name="days" size="2"> Tage
<input type="text" name="hours" size="2"> Stunden
<input type="text" name="mins" size="2"> Minuten
<input type="text" name="secs" size="2"> Sekunden
<input type="text" name="millis" size="2"> Millisekunden bis zum Ende der Arbeitsperiode
<button onclick="start();">newtime</button>
<br><br><br>
</FONT></B>
</FORM>
</CENTER>
</BODY>
</HTML>
Per Button starten und resetten:
Schlussendlich muss ich das ganze per Buttonklick starten können und dabei soll der Countdown neu gesetzt werden. Also hier beides zusammen:
Änderung: onload raus, button wie gehabt, start() um funktionaufruf von clock() erweitert
Resultat: ohne funktion
HTML:
<html>
<BODY TEXT="#FFFFFF" LINK="#FFFFFF" VLINK="#999999" ALINK="#00FF00" BGCOLOR="#000000" onload="">
<Center>
<script>
var diffMonths=-1, diffDays=-1, diffHours=-1, diffMins=-1, diffSecs=-1
compDat = new Date(new Date().getTime()+5000)
var msPerMonth = 31 * 24 * 60 * 60 * 1000
var msPerDay = 24 * 60 * 60 * 1000
var msPerHour = 60 * 60 * 1000
var msPerMin = 60 * 1000
var msPerSec = 1000
var work = true
function start() {
work = true
compDat.setTime(new Date().getTime()+10000)
clock();
}
function clock(){
var today = new Date()
var changeD = diffDays
var changeH = diffHours
var changeMin = diffMins
var changeSec = diffSecs
var diffMs = compDat.getTime() - today.getTime()
diffDays = Math.floor(diffMs / msPerDay)
diffMs -= diffDays * msPerDay
diffHours = Math.floor(diffMs / msPerHour)
diffMs -= diffHours * msPerHour
diffMins = Math.floor(diffMs / msPerMin)
diffMs -= diffMins * msPerMin
diffSecs = Math.floor(diffMs / msPerSec)
diffMs -= diffSecs * msPerSec
if(changeD!=diffDays) document.forms[0].days.value=diffDays
if(changeH!=diffHours) document.forms[0].hours.value=diffHours
if(changeMin!=diffMins) document.forms[0].mins.value=diffMins
if(changeSec!=diffSecs) document.forms[0].secs.value=diffSecs
document.forms[0].millis.value=diffMs
if (work == true) {
if (work && diffDays > 0 || diffHours > 0 || diffMins > 0 || diffSecs > 0 || diffMs > 136) {
timerID = setTimeout("clock()",111)
} else {
work = false;
timerID = setTimeout("clock()",diffMs-25);
}
} else {
alert('beendet');
}
}
</SCRIPT>
<FORM><B><FONT FACE="Arial,Helvetica" SIZE="1">Noch
<input type="text" name="days" size="2"> Tage
<input type="text" name="hours" size="2"> Stunden
<input type="text" name="mins" size="2"> Minuten
<input type="text" name="secs" size="2"> Sekunden
<input type="text" name="millis" size="2"> Millisekunden bis zum Ende der Arbeitsperiode
<button onclick="start();">pomodoro starten</button>
<br><br><br>
</FONT></B>
</FORM>
</CENTER>
</BODY>
</HTML>
Schlussendlich hänge ich hier seid Stunden an diesem pissel-Problem, obwohl ich wohl noch viel wichtigere Probleme haben werde aber ich komme nicht weiter, weil es hier schon nicht funktioniert.
Ich habe keine Idee woran es liegt, dass
1) die Funktion clock nur dann richtig arbeitet, wenn sie von onload aufgerufen wird
und
2) es nicht möglich ist den Wert von compDat zu ändern sodass er ab 10 Sekunden runterzählt. Er ändert ihn aber! Jedoch auf 5 Sekunden in der Zukunft, statt der angegebenen 10 Sekunden in der Zukunft.
Danke - Enomine