JS Uhr mehrfach ausgeben über eine Funktion?

Lukas03

Mitglied
Hallo zusammen einen schönen Karfreitag,

hab folgenden code zu Hand, möchte mehrere Uhrzeiten gleichzeitig ausgeben lassen die div ID wird später über eine PHP if-schleife ausgegeben und zugeordnet.

Wie kann ich die startTime() in eine Funktion umbauen oder wird es nicht funktionieren?


PHP:
<?php

// Test time
$zeit1 = "1617535772";
$zeit2 = "1617775772";
$zeit3 = time();
?>

Javascript:
<script>
var ctoday = <?php echo $zeit1 * 1000 ?>;

setInterval(function() {ctoday += 1000;},1000);
function startTime() {
    var today = new Date(ctoday);
    var montharray = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
    var h = today.getHours();
    var ampm = h >= 24 ? '':'';
    h = h % 24;
    h = h ? h : 24;
    var m = today.getMinutes();
    var s = today.getSeconds();
    h = checkTime(h);
    m = checkTime(m);
    s = checkTime(s);
    document.getElementById('txt').innerHTML =
    checkTime(today.getDate())+" "+montharray[today.getMonth()]+" "+today.getFullYear() + " (" + ampm +" " + h + ":" + m + ":" + s +")";
    setTimeout(startTime, 1000);
}

function checkTime(i) {
    if (i < 10) {i = "0" + i};
    return i;
}

</script>

HTML:
<body onLoad="startTime();startTime2()">
    <span id="txt"></span>
    <span id="txt2"></span>
</body>
 

Jan-Frederik Stieler

Monsterator
Moderator
Hi,
ich versteh nicht so ganz was Du jetzt für ein Problem hast bzw. wie Deine Frage ist bei der wir helfen können?
Wie kann ich die startTime() in eine Funktion umbauen oder wird es nicht funktionieren?
startTime() ist doch schon eine Funktion?

wenn einer mit if-Schleife kommt gibts ne Klatsche
IF-Schleifen gibt es nicht nur if-Abfragen oder -Verzweigung.
Schleifen sind Konstrukte welche mehrmals durchlaufen wie for, while, foreach.

Grüße
 

Sempervivum

Erfahrenes Mitglied
Ich verstehe Lukas03 so, dass er drei Uhrzeiten ausgeben möchte, ohne die vorhandene Funktion und die Variablen zu verdreifachen. Dass er statt dessen das Ganze in eine einzige Funktion verpacken möchte, die für alle drei Zeiten verwendet werden kann. Könnte dann z. B. so aussehen:
Code:
<?php
// Test time
$zeit1 = "1617535772";
$zeit2 = "1617775772";
$zeit3 = time();
?>
<div id="clock1"></div>
<div id="clock2"></div>
<div id="clock3"></div>
<script>
    function clock(idOut, deltaMs) {
        setInterval(() => {
            const time = new Date(Date.now() + deltaMs);
            const timeStr = time.toLocaleString('de-DE', {
                year: 'numeric', month: 'long', day: 'numeric',
                hour: '2-digit', minute: '2-digit', second: '2-digit'
             });
            document.getElementById(idOut).textContent = timeStr;
        }, 100);
    }
    clock('clock1', <?php echo $zeit1; ?> * 1000 - Date.now());
    clock('clock2', <?php echo $zeit2; ?> * 1000 - Date.now());
    clock('clock3', <?php echo $zeit3; ?> * 1000 - Date.now());
</script>
 
Zuletzt bearbeitet:

Neue Beiträge