Javascript Coundown Code zeigt nichts an?

Shorty1968

Erfahrenes Mitglied
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
 
Lösung
Denk dran das du den Link ändern mußt aus den Code. Den Original Link der api muß da rein. Von mein Adresse geht das nicht weil der CORS dann meckert.

Zeigt der Link aus post23 auch nur 00 an ?
Hast du mal geschaut ob der Code bei Codepen zumindest funktioniert1

Link zur Lösung

Bei mir steht jetzt
3 Std. 46 Min. bestellen, Versand diesen Freitag
Also passt perfekt. Man könnte noch Sekunden rein bauen damit sieht das der Timer auch läuft.Aber ansonsten lief dein anfangs Script ja soweit ganz gut
Ja genau das muss seperat in die jeweiligen Dateien,ich habe schon versucht deinen Code auseinander zu nehmen und es zu versuchen,aber da wurde der Timer nicht angezeigt.
 
Das ist a merkwürdig. Habe gerade bei mir aucheine html,css,und javascript datei erstellt. Er läd die js Datei überhaupt nicht rein. In der Browsertools kann man sehen das er die js gar nicht aufruft. Also sowas habe ich auch noch nicht erlebt. Mal kucken ob ich den Fehler finde.

EDIT: Ab und zu bin ich auch zu blöde.
Kuck mal ob das so geht bei dir .
Kann das sein das du die Js Datei am Anfang eingebunden hast und nicht an ende der html Datei ?
So sollte es gehen
**Link entfernt, weil Seite nicht mehr erreichbar **
Machst du die js Datei am Anfang hin sind die Elemente ja noch nicht da ,die das Script brauch. Deswegen geht es nicht und sollte auch eine Fehler in der Konsole rauswerfen
 
Zuletzt bearbeitet:
Leider kann ich es so nicht einbinden,es müsste so sein wie hier.
**Link entfernt, weil Seite nicht mehr erreichbar **
Du meinst das jsund css bei code pen in den einzelnen Boxen drinne ist ,oder was meinst du ?
Dann mußt du doch nur den Code darein Kopieren

Ich hatte eine Idee und wollte mir diesen **Link entfernt, weil Seite nicht mehr erreichbar ** als Popup einbauen,aber obwohl ich alles in der .php Popup übernommen habe wird kein Counter angezeigt?

**Link entfernt, weil Seite nicht mehr erreichbar **
Was verstehst du unter Popup ?
Einige Leute denken da an einen Alert ,anderen wieder an einer divBox , oder halt ein extra Fenster.?
Weil bei dein Link den du gepostet hast konnte ich nix finden was wie ein popup aussieht (auser der von mir),deshalb habe ich das jetzt mal so gemacht.

Habe jetzt den Code jetzt mal bei Code pen da einzelnt gemacht nach css und javascript. Habe danoch ein Button rein gemacht , der Zeigt dir dann die Zeit in einen Popup( Fenster) an.

Link zur Lösung


Wenn du das mit den popup besser erklären tust könnte man das ja ändern. Vieleicht hast du ja irgendwo schon mal ein demo gesehen wie du das haben willst.
 
Zuletzt bearbeitet:
Das mit dem Popup bekomme ich ja selber hin,den Link habe ich gepostet weil bei mir das Javascript aus irgendeinem Grund nicht richtig Funktioniert wie z.b.wen ich die Feiertage anklicke.

Nun wird zwar ein Counter angezeigt,aber dieser zeigt es wider nicht richtig an den in 6:22:7 wird nichts versendet am WE erst am Samstag oder Montag?

Mal etwas am rande ich finde es sau geil deine Hilfe und würde dir gerne eine kleine spende per Paypal zukommen lassen?
 
So habe mal selber mich daran versucht und immer hin habe ich den Counter dazu gebracht das er zu sehen ist,aber es müsste an meiner Variante noch mal geschaut werden am WE Zeigt er nicht an das der Versand am Samstag oder Montag statfindet sondern am Sonntag.

https://schnaepchenpiet.shop/shippingcounter.php

Und wie kann ich die Feiertage bearbeiten so das sie schon bei manschen auf das nächste Jahr verweisse wie z.b. Neujahr?
 
Schön blöd. Jetzt wo ich wach bin steht mein Counter auf 15 Stunden ,genau so wie es sein soll. Dein Link geht gerade nicht. Aber ich teste gleich meinen Counter nochmal mit allen Datums per Hand eingabe. Gerade die Tage wie sonntag morgens weil da wahr er wohl gerade falsch,wasichnicht sehen konnte weil wahr noch an schlafen. Kucke ich gleich aber nochmal. Das andere mit der Api kannst du nur ndern wenn du die Daten aus der Api kopierst und auf dein eigenen Server legst und die Daten mit der Hand selber eintragen tust. Die Api von der anderen Seite hat da nur die Daten von diesen Jahr drinne. Aber das wäre nicht das problem die Datums da selber einzutragen. Wenn du die Daten schon auf dein Server liegen hast könnte man die auch mit Php einbinden und somit ein request sparen
 
Javascript Coundown Code zeigt nichts an?



Ich glaube aber das man nochmal alles neu machen sollte, weil es jetzt langsam zu unübersichtlich wird. Außerdem ist das etwas doof meiner Meinung nach. Wenn wir samstags haben , würde ja reichen, wenn da steht Versand in 2 Tagen. Der Timer sollte erst laufen, wenn er innerhalb 24 Stunden kommt. Wenn wir Samstag Abend hätten und da steht der Versand ist in 2 Tagen und 14 Stunden, wäre es schon Dienstag.
Also müsste man die Tage in Stunden umrechnen, dann steht da zwar 50 Stunden oder so, aber das wäre dann richtiger. Eigentlich müsste man ja auch weihnachten, beachtender auf Donnerstag fallen könnte, dann wäre der Versand erst in 4 Tagen.
Wie man sieht, gibt es da einiges zu beachten. Ich mache mich morgen (Montag ) nochmal da dann und versuche an alles zu denken, weil jeden Fehler mit einer neuen if abfrage, zu retten ist nicht der Sinn. Du könntest ja schon mal gucken, ob du eine API erstellst, wo die Feiertage der nächsten Jahre drinnen stehen ,oder vielleicht eine findest, die auch mehrere Jahre im Voraus abschrecken kann. Die API die ich jetzt benutze, ist ja immer nur für ein Jahr und habe ja eben schon geschrieben das man die selber schreiben kann und auch mit PHP einbinden könnte und somit requeste sparen kann. Ok melde mich morgen irgendwann, wenn ich Ergebnis habe
 
Zuletzt bearbeitet:
Zurück