Anzeige

 Javascript Coundown Code zeigt nichts an?


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Shorty1968

Erfahrenes Mitglied
#1
Hallo ich möchte mir Folgender Javascript erweiterung erreichen das in meinem Shop die Tage,Std usw angezeigt werden bis bei Bestellung der Versand erfolgt.
Code:
new Date("<? echo date("M d, Y H:i:s"); ?>"); // <-- Serverzeit
//var Zeit = new Date(); <-- Clientzeit zum testen
var ServSec = Zeit.getSeconds();
var deadline = 14 // Uhr
// Feiertage : An folgenden Tagen die Versandcountdownbox auf Produktseiten ausblenden (Bei Feiertagen berücksichtigen die Box schon am Vortag ausblenden zu lassen)
var allefeiertage = [
// ALLE FEIERTAGE NRW!
"2018-03-29", // DONNERSTAG Ein Tag vor Karfreitag                      2018
"2018-03-30", // FREITAG        Karfreitag                                              2018
"2018-03-31", // SAMSTAG        vor Ostermontag                                 2018
"2018-04-01", // SONNTAG        vor Ostermontag                                 2018
"2018-04-02", // MONTAG         Ostermontag                                             2018

"2018-04-30", // MONTAG         vor Tag der Arbeit                              2018
"2018-05-01", // DIENSTAG       Tag der Arbeit                                  2018

"2018-05-09", // MITTWOCH       Ein Tag vor Christi Himmelfahrt 2018
"2018-05-10", // DONNERSTAG Christi Himmelfahrt                         2018

"2018-05-18", // FREITAG        vor Pfingstmontag                       2018
"2018-05-19", // SAMSTAG        vor Pfingstmontag                       2018
"2018-05-20", // SONNTAG        vor Pfingstmontag                       2018
"2018-05-21", // MONTAG         Pfingstmontag                   2018

"2018-05-30", // MITTWOCH       Ein Tag vor Fronleichnam                2018
"2018-05-31", // DONNERSTAG Fronleichnam                                        2018

"2018-10-02", // DIENSTAG       vor Tag der Deutschen Einheit   2018
"2018-10-03", // MITTWOCH       Tag der Deutschen Einheit               2018


"2018-10-31", // MITTWOCH       ein Tag vor Allerheiligen               2018
"2018-11-01", // DONNERSTAG Allerheiligen                                       2018


"2018-12-24", // MONTAG         Heiligabend                                             2018
"2018-12-25", // DIENSTAG   1. Weihnachtstag                            2018
"2018-12-26", // MITTWOCH   2. Weihnachtstag                            2018

"2018-12-31", // MONTAG         Silvester                                               2018
"2019-01-01"  // DIENSTAG       Neujahr                                         2018
//Im Letzten Wert des Arrays KEIN KOMMA!
];
function countdown() {
var Stunden = 23-Zeit.getHours();
var Minuten = 59-Zeit.getMinutes();
var Sekunden = 60-Zeit.getSeconds()-1;
var Stunden = Stunden+deadline;
if (Sekunden==60) { Sekunden=0; }
if (Minuten==60) { Minuten=0; }
if (Stunden == 0) Stunden = "00";
if (Stunden == 24) Stunden = "00";
if (Stunden >= 25) Stunden = Stunden-24;
if (Stunden <= 9 && Stunden != "00") Stunden = "0"+Stunden;
if (Minuten <= 9) Minuten = "0" + Minuten;
if (Sekunden <= 9) Sekunden = "0" + Sekunden;
if (Stunden == "00") {
    var Stundenfull = "</span>";
} else {
    var Stundenfull = Stunden+"</span> Std. ";
}
if (Stunden == "01") {
    var Stundenfull = "1</span> Std. ";
}
if (Stunden == "02") {
    var Stundenfull = "2</span> Std. ";
}
if (Stunden == "03") {
    var Stundenfull = "3</span> Std. ";
}
if (Stunden == "04") {
    var Stundenfull = "4</span> Std. ";
}
if (Stunden == "05") {
    var Stundenfull = "5</span> Std. ";
}
if (Stunden == "06") {
    var Stundenfull = "6</span> Std. ";
}
if (Stunden == "07") {
    var Stundenfull = "7</span> Std. ";
}
if (Stunden == "08") {
    var Stundenfull = "8</span> Std. ";
}
if (Stunden == "09") {
    var Stundenfull = "9</span> Std. ";
}
var Zeitausgabe = "<span class=\"countdownstunden\"><span class=\"countdownpointer\">" + Stundenfull + "<span class=\"countdownminuten\"><span class=\"countdownpointer\">" + Minuten + " </span> Min. </span>";
Uhrzeit.innerHTML = Zeitausgabe;
var weekdays = new Array();
weekdays[0] = "Sonntag";
weekdays[1] = "diesen Montag";
weekdays[2] = "diesen Dienstag";
weekdays[3] = "diesen Mittwoch";
weekdays[4] = "diesen Donnerstag";
weekdays[5] = "diesen Freitag";
weekdays[6] = "Samstag";
weekdays[7] = "diesen Montag";
var current_date = new Date("<? echo date("M d, Y H:i:s"); ?>"); // <-- Serverzeit
//var current_date = new Date(); <-- Clientzeit zum testen
if (Stunden<deadline)
weekday_value = current_date.getDay()
else
weekday_value = current_date.getDay()+1
if (weekday_value==6)
weekday_value = 7
if (weekday_value==0)
weekday_value = 7
if (Stunden<deadline&&weekday_value==6&&weekday_value==0)
Tagangabe.innerHTML = ""
else
Tagangabe.innerHTML = weekdays[weekday_value]
ServSec++;
if (ServSec > 60) { ServSec = 1; }
Zeit.setSeconds(ServSec);
setTimeout("countdown()", 1000);
function isoDateString(d){
  function pad(n){return n<10 ? '0'+n : n}
  return d.getFullYear()+'-'+
    pad(d.getMonth()+1)+'-'+
    pad(d.getDate())
}
var today = new Date("<? echo date("M d, Y H:i:s"); ?>");
Array.prototype.contains = function(elem)
{for (var i in this)
{if (this[i] == elem) return true;}
return false;};
var b = isoDateString(today);
if (allefeiertage.contains(b))
document.getElementById("versandcountdown").style.display = "none";
else
document.getElementById("versandcountdown").style.display = "block";
};
window.onload = countdown;
</script>
<?php
}
?>
HTML:
<div id="versandcountdown">
Innerhalb von <span id="Uhrzeit"><span class="countdownstunden"><span class="countdownpointer">00</span> Std. <span class="countdownminuten"><span class="countdownpointer">00 </span> [URL='http://www.php.net/min']Min[/URL]. </span></span></span>
bestellen, Versand <span id="Wann"></span>
<span id="Tagangabe">wird berechnet...</span>
</div>
Was habe ich Falsch gemacht,die Browser Konsole zeigt mir keinen fehler an.

https://schnaepchenpiet.shop/PC-Zubehoer/P706-Android-4-4-4-Mini-Tablet::3.html
 

Shorty1968

Erfahrenes Mitglied
#4
Bei mir werden nun Zahlen angezeigt aber er zählt nicht runter,egal wie lange ich warte es bleiben immer die Selben Zahlen,auf deiner Test Seite zählt er aber runter.

Woran könnte das bei mir liegen?
 

basti1012

Erfahrenes Mitglied
#5
Ich gebe dir mal den ganzen Code .
Kopiere den mal bei dir rein und teste dann mal.
Code:
<script>

var Zeit=new Date("<? echo date("M d, Y H:i:s"); ?>");
var ServSec = Zeit.getSeconds();
var deadline = 14;
var allefeiertage = [
"2018-03-29", // DONNERSTAG Ein Tag vor Karfreitag                      2018
"2018-03-30", // FREITAG        Karfreitag                                              2018
"2018-03-31", // SAMSTAG        vor Ostermontag                                 2018
"2018-04-01", // SONNTAG        vor Ostermontag                                 2018
"2018-04-02", // MONTAG         Ostermontag                                             2018
"2018-04-30", // MONTAG         vor Tag der Arbeit                              2018
"2018-05-01", // DIENSTAG       Tag der Arbeit                                  2018
"2018-05-09", // MITTWOCH       Ein Tag vor Christi Himmelfahrt 2018
"2018-05-10", // DONNERSTAG Christi Himmelfahrt                         2018
"2018-05-18", // FREITAG        vor Pfingstmontag                       2018
"2018-05-19", // SAMSTAG        vor Pfingstmontag                       2018
"2018-05-20", // SONNTAG        vor Pfingstmontag                       2018
"2018-05-21", // MONTAG         Pfingstmontag                   2018
"2018-05-30", // MITTWOCH       Ein Tag vor Fronleichnam                2018
"2018-05-31", // DONNERSTAG Fronleichnam                                        2018
"2018-10-02", // DIENSTAG       vor Tag der Deutschen Einheit   2018
"2018-10-03", // MITTWOCH       Tag der Deutschen Einheit               2018
"2018-10-31", // MITTWOCH       ein Tag vor Allerheiligen               2018
"2018-11-01", // DONNERSTAG Allerheiligen                                       2018
"2018-12-24", // MONTAG         Heiligabend                                             2018
"2018-12-25", // DIENSTAG   1. Weihnachtstag                            2018
"2018-12-26", // MITTWOCH   2. Weihnachtstag                            2018
"2018-12-31", // MONTAG         Silvester                                               2018
"2019-01-01"  // DIENSTAG       Neujahr                                         2018
];
function countdown() {
var Stunden = 23-Zeit.getHours();
var Minuten = 59-Zeit.getMinutes();
var Sekunden = 60-Zeit.getSeconds()-1;
var Stunden = Stunden+deadline;
if (Sekunden==60) { Sekunden=0; }
if (Minuten==60) { Minuten=0; }
if (Stunden == 0) Stunden = "00";
if (Stunden == 24) Stunden = "00";
if (Stunden >= 25) Stunden = Stunden-24;
if (Stunden <= 9 && Stunden != "00") Stunden = "0"+Stunden;
if (Minuten <= 9) Minuten = "0" + Minuten;
if (Sekunden <= 9) Sekunden = "0" + Sekunden;
if (Stunden == "00") {
    var Stundenfull = "</span>";
} else {
    var Stundenfull = Stunden+"</span> Std. ";
}
if (Stunden == "01") {
    var Stundenfull = "1</span> Std. ";
}
if (Stunden == "02") {
    var Stundenfull = "2</span> Std. ";
}
if (Stunden == "03") {
    var Stundenfull = "3</span> Std. ";
}
if (Stunden == "04") {
    var Stundenfull = "4</span> Std. ";
}
if (Stunden == "05") {
    var Stundenfull = "5</span> Std. ";
}
if (Stunden == "06") {
    var Stundenfull = "6</span> Std. ";
}
if (Stunden == "07") {
    var Stundenfull = "7</span> Std. ";
}
if (Stunden == "08") {
    var Stundenfull = "8</span> Std. ";
}
if (Stunden == "09") {
    var Stundenfull = "9</span> Std. ";
}
var Zeitausgabe = "<span class=\"countdownstunden\"><span class=\"countdownpointer\">" + Stundenfull + "<span class=\"countdownminuten\"><span class=\"countdownpointer\">" + Minuten + " </span> Min. </span>";
Uhrzeit.innerHTML = Zeitausgabe;
var weekdays = new Array();
weekdays[0] = "Sonntag";
weekdays[1] = "diesen Montag";
weekdays[2] = "diesen Dienstag";
weekdays[3] = "diesen Mittwoch";
weekdays[4] = "diesen Donnerstag";
weekdays[5] = "diesen Freitag";
weekdays[6] = "Samstag";
weekdays[7] = "diesen Montag";
var current_date = new Date("<? echo date("M d, Y H:i:s"); ?>");
if (Stunden<deadline)
weekday_value = current_date.getDay()
else
weekday_value = current_date.getDay()+1
if (weekday_value==6)
weekday_value = 7
if (weekday_value==0)
weekday_value = 7
if (Stunden<deadline&&weekday_value==6&&weekday_value==0)
Tagangabe.innerHTML = ""
else
Tagangabe.innerHTML = weekdays[weekday_value]
ServSec++;
if (ServSec > 60) { ServSec = 1; }
Zeit.setSeconds(ServSec);


setTimeout(function(){countdown()}, 1000);
function isoDateString(d){
  function pad(n){return n<10 ? '0'+n : n}
  return d.getFullYear()+'-'+
    pad(d.getMonth()+1)+'-'+
    pad(d.getDate())
}


var today = new Date("<? echo date("M d, Y H:i:s"); ?>");
Array.prototype.contains = function(elem)
{for (var i in this)
{if (this[i] == elem) return true;}
return false;};
var b = isoDateString(today);
if (allefeiertage.contains(b))
document.getElementById("versandcountdown").style.display = "none";
else
document.getElementById("versandcountdown").style.display = "block";
};
window.onload = countdown;
</script>


<div id="versandcountdown">
<span id="Uhrzeit"><span class="countdownstunden"><span class="countdownpointer">00</span> Std. <span class="countdownminuten"><span class="countdownpointer">00 </span> [URL='http://www.php.net/min']Min[/URL]. </span></span></span>
bestellen, Versand <span id="Wann"></span>
<span id="Tagangabe">wird berechnet...</span>
</div>
Hatte nur kleinigkeiten geändert,wie vergessenes ; und falsch auskommentierten Text. Mehr wahr das nicht
 

basti1012

Erfahrenes Mitglied
#6
Stimmt sogar garnicht.Ich habe am anfang das <?php weg gemacht und mit <script> ausgetauscht. Dann unten das <?php } ?> weg gemacht und dann läuft es eigentlich schon.
Weiß ja nicht ob bei dir vor dem geposteten Code noch mehr Code ist ,fals nein ist das von mir beschriebene da vollkommen falsch an Platz und kann und muß weg damit es läuft.
Fals da aber noch Code ist können wir das ja nicht sehen.
Aufjedenfall mußten die Sachen geändert werden bei den geposteten Code damit es läuft
 

Shorty1968

Erfahrenes Mitglied
#7
Danke aber auch der von dir gepostete Code zählt bei mir nicht runter,ja in der Datei in die der Code rein kommt gibt es noch einen anderen Code,der aber mit diesem eigentlich nichts zutun hat.

Dann Zeigt der Text wider an "Versand am Dienstag" aber nun müste dort oder sollte dort stehen "Versand noch heute",es müsste immer wechseln je nach dem wann der versand wäre.
 

basti1012

Erfahrenes Mitglied
#8
Bei mir steht jetzt versand diesen Dienstag. Also richtig oder ?
Kuck doch mal was deine Cache macht. Lösche die doch mal. Fals der von mir gepostete Link das anzeigt was er soll dann muß der Fehler ja irgendwo an Cache ,oder am rest Code liegen. Hast du mal versucht nur den gepostet Code zu testen ? Ohne irgendwelchen anderen Code? Du hast da ja auch php mit drinne. Läuft das Script auch nicht mit der JS Variante die du auskommentiert hast?
 

basti1012

Erfahrenes Mitglied
#10
das kommt mir so vor als wenn bei dir der timer nicht geht.
Schreib da mal eine Console rein und kuck mal ob der Timer ünerhaupt arbeitet
Code:
setTimeout(function(){
countdown();
console.log('Timeout ok');
}, 1000);
Wenn dann in der Console nix stehen sollte dann sind wir schon mal auf den richtigen weg.Eigentlich sollte jetzt jede Sekunde der Eintrag in der console stehen.
Hast du mal einen anderen Browser getestet ?
Welchen Browser nutzt du den ?
 

Shorty1968

Erfahrenes Mitglied
#11
Ist es egal wo genau ich deinen code setze,wenn ja wird nichts angezeigt?

Ich nutze den Firefox version 62.0 64bit.

*EDIT*
Im Opera geht der Countdown ohne Probleme.
 
Zuletzt bearbeitet:

basti1012

Erfahrenes Mitglied
#13
Ich nutze den Firefox version 62.0 64bit.

*EDIT*
Im Opera geht der Countdown ohne Probleme.
Ich habe jetzt alle meine Browser getestet und überall läuft es. Muß aber dabei sagen das meine Browser etwas älter sind ( 1 Jahr ) weil ich keine Updats mehr gemacht habe ( Wird mal Zeit mein Opera spinnt schon ).
Vieleicht sollten auch mal andere Leute testen und kucken ob es bei ihn läuft ,damit wir mal den Fehler eingrenzen können. Wenn bei irgendein Browser von mir der Code jetzt nicht gelaufen hätte, dann hätte ich Fehler debuggen können. Doch in den fall muß ich sagen das es ( LEIDER ) in allen Browser läuft und ich da so nicht weiter komme.

Auch blöd, normalerweise freut man sich ja wenn es in allen Browsern läuft.

Vieleicht hat ja noch wer anders eine idee weil so langsam fallen mir keine Ideen mehr ein
 

Shorty1968

Erfahrenes Mitglied
#14
Na ja wir wissen nun immer hin das der Code im Neusten Firefox nicht Funktioniert,da er bei mir in anderen Browser auch Funktioniert nur schade das wir nicht raus finden woran es liegt und er dann auch im Neusten Firefox gehen würde.

Aber man kann auch nicht alles haben leider,ich danke dir viel mals für deine Hilfe.
 

basti1012

Erfahrenes Mitglied
#15
Ich mache nachher mal Update von mein Firefox( Wird mal Zeit ) und versuche dann mal zu kuckenwo der Fehler liegen könnte. Normalerweise ist ja der IE Browser der immer stress macht ,aber jetzt der neuste Firefox ist auch irgendwie komisch.
Vieleicht hat ja noch wer anders nee Idee. Ich versuche das später mal und melde mich dann heute abend. Bis dahin , schönen Tag noch und genießt die Sonne( Aktuell 23 Grad bei uns ):
 

Shorty1968

Erfahrenes Mitglied
#16
Vielen dank für deine Mühe ja da gebe ich dir recht das er Komisch ist er Zickt auch sehr rum der Firefox,aber ich habe ihn auch Hauptsächlich weil der Inspector und Reponsiv Test mit Bildschirm Grösse im Firefox mir schon viele geholfen hat,die Entwickler Tool finde ich unschlagbar bietet noch kein anderer Browser in der Form.

Aber mir ist in dem Code noch ein anderes problem aufgefallen z.b. steht ja da 9 std 10 min bestellen versand diesen Dienstag" , bei mir ist es aber so eingestellt oder der Versand bis 13 Uhr bestellt wird und das Geld da ist,das wären keine 9 Std,kann ich das irgendwo anpassen?
 

basti1012

Erfahrenes Mitglied
#17
Wie meinst du das genau?
Wenn du vor 13Uhr bestellst ,dann wird eine andere Zeit berechnet . Ich habe mir den Code noch gar nicht so genau angekuckt wann er wie was berechnet.
Was soll er den genau machen? Um wie viel Uhr ist den der Timerauf 00.00.00
 

basti1012

Erfahrenes Mitglied
#20
Das mit der Zeit anpassen verstehe ich nicht ganz weil das bei mir irgendwie richtig anzeigt. Bin gerade dabei für mich auch sowas in der art zu bauen mit Api. Der liest die Feiertage automatisch aus der Api aus und vergleicht die dann. Vieleicht wäre das auch was für dich.
Ich muß aber sagen das Zeit rechnung voll nicht mein ding ist. Ich kriege den übergang vom 30/31 aus den ersten nicht hin ,weil die Monate ja mal 30 oder 31 Tage habe. Gibt es dafür ein Trick ? Habe schon an arrays gedacht ,doch woher bekomme ich die anzahl der Tage von Februar raus ,weil die ändern sich ja alle 4 Jahre.

Aber gut das du es nochmal sagst wegen den Firefox Update. Hatte gerade viel zu tun und hatte das vergessen. Aber mache ich heute noch.
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Anzeige

Neue Beiträge

Anzeige