Wie vorhin, war nicht getestet. Ich habe noch einige Anweisungen hinzu gefügt und hoffe, dass es jetzt unter allen Bedingungen läuft:
Code
<script>
// Timervariable fuer das SetInterval
var timer;
// Parameter "onload" hinzu gefuegt, dieser gibt an, dass die Funktion
// beim Laden der Seite aufgerufen wurde
function TimerUnter(onload) {
thecb = document.getElementById('unter');
thetiles = document.getElementById('tiles');
var isChecked = true;
if (onload) {
// Die Funktion wurde beim Laden der Seite aufgerufen
// Endezeit aus dem localStorage auslesen
var target_date = localStorage.getItem('target_date');
if (!target_date) {
// Keine Endezeit vorhanden: Der Timer wird nicht gestartet
isChecked = false;
} else {
// Endezeit vorhanden: Zeitdifferenz berechnen
var time_limit = target_date - Date.now();
thecb.checked = true;
}
} else {
// Die Funktion wurde beim Klick auf die Checkbox aufgerufen:
// Parameter für den Timer aus dem Minutenwert ermitteln
var isChecked = thecb.checked;
var minutes = thecb.value;
var time_limit = minutes * 60 * 1000;
var target_date = Date.now() + time_limit; // set the countdown date
// Endezeit in den Localstorage eintragen
localStorage.setItem('target_date', target_date);
}
//set actual timer
setTimeout(
function () {
//alert( 'done' );
}, time_limit);
var days, hours, minutes, seconds; // variables for time units
var countdown = thetiles; // get tag element
if (isChecked == true) {
getCountdown();
// Timer starten
timer = setInterval(getCountdown, 1000);
function getCountdown() {
// find the amount of "seconds" between now and target
var current_date = new Date().getTime();
var seconds_left = (target_date - current_date) / 1000;
if (seconds_left >= 0) {
console.log(time_limit);
if ((seconds_left * 1000) < (time_limit / 2)) {
thetiles.classList.remove("color-full");
thetiles.classList.add("color-half");
}
if ((seconds_left * 1000) < (time_limit / 4)) {
thetiles.classList.remove("color-half");
thetiles.classList.add("color-empty");
}
days = pad(parseInt(seconds_left / 86400));
seconds_left = seconds_left % 86400;
hours = pad(parseInt(seconds_left / 3600));
seconds_left = seconds_left % 3600;
minutes = pad(parseInt(seconds_left / 60));
seconds = pad(parseInt(seconds_left % 60));
// format countdown string + set tag value
countdown.innerHTML = "<span>" + hours + ":</span><span>" + minutes + ":</span><span>" + seconds + "</span>";
}
}
function pad(n) {
return (n < 10 ? '0' : '') + n;
}
}
else {
thetiles.classList.remove("color-empty");
thetiles.classList.add("color-full");
thetiles.innerHTML = '';
clearInterval(timer); // Timer löschen
localStorage.removeItem('target_date');
}
}
// Funktion mit gesetztem Parameter "onload" aufrufen
TimerUnter(true);
</script>
Alles anzeigen