• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Cowntown Variable übergeben

J

joiyco

Guest
Hallo Zusammen ich bin neu mit Javascript unterwegs und eigentlich brauch ich erstmal nur ein kleines Script.

Die Suchfunktion spuckt leider nichts passendes für mich aus. Ich möchte einen Cowntdown bis zu einem bestimmten Datum (übergabeparameter). Leider zählt er den Cowntdown nur runter wenn ich die Variable am Anfang meines scriptes fest reincode.

Danke für eure Hilfe

Joiyco

Hier mein code

HTML:
<div class="Countdown">
 <span id="c1"></span><br>
 <span id="c2">;</span><br>
 <p>...bis zum 24 Dezember 2016 / 18:00 Uhr</p>
</div>

<script type='text/javascript'>
//var end = new Date("December 24, 2016 18:00:00"); Works well

function toSt2(n) {
  var s = '';
  if (n < 10) {
   s += '0';
  }
  return (s + n).toString();
}

function toSt3(n) {
 var s = '';
 if (n < 10) {
  s += '00';
 }
 else if (n < 100) {
  s += '0';
 }
 return (s + n).toString();
}

function countdown(end_date) {
var end = new Date(end_date); //übergabeparameter klappt nicht
 var d = new Date();
 var count = Math.floor(end.getTime() - d.getTime());
 if (count > 0) {
  var miliseconds = toSt3(count%1000); count = Math.floor(count/1000);
  var seconds = toSt2(count%60); count = Math.floor(count/60);
  var minutes = toSt2(count%60); count = Math.floor(count/60);
  var hours = toSt2(count%24); count = Math.floor(count/24);
  var days = count;
  document.getElementById('c1').innerHTML = days + ' TAGE';
  document.getElementById('c2').innerHTML = hours + ':' + minutes + ':' + seconds + '.' + miliseconds;
  setTimeout('countdown()', 100);
 }
}
countdown("December 24, 2016 18:00:00");
</script>
 
Zuletzt bearbeitet von einem Moderator:
Grüße Dich. Das ist eine der gängigsten Hausaufgaben in JS überhaupt. Und Google gibt Dir schier unzählige Beispiele.

Ansonsten ist der Unterschied, dass Du einen String übergibst an "countdown()" (letzte Zeile). Dieser erwartet aber (s. "works well") schlichtweg ein Date-Object (mit "new date").

Lass Dich von sowas nicht entmutigen oder abschrecken und bleib am Ball - es lohnt sich.

Grüße
 
Leider zählt er den Cowntdown nur runter wenn ich die Variable am Anfang meines scriptes fest reincode.
weil du in countdown alle 100 ms countdown() ohne parameter aufrufst.
Code:
setTimeout('countdown()', 100);
hier musst du einfach nur das datum wieder mitgeben
Code:
setTimeout(function() { countdown(end); }, 100);
 
Danke für Ansätze

ich habe es auf die Art gelöst. Hoffe das dies auch eine Akzeptable Lösung ist. Zudem hab ich das ganze in eine .js ausgelagert und in der html Seite eingebunden.

HTML:
var endDate;

function toSt2(n) {
  var s = '';
  if (n < 10) {
   s += '0';
  }
  return (s + n).toString();
}

function toSt3(n) {
 var s = '';
 if (n < 10) {
  s += '00';
 }
 else if (n < 100) {
  s += '0';
 }
 return (s + n).toString();
}


function countdown(end) {
if (typeof(endDate) == 'undefined') {
 endDate = new Date(end);
}
 var d = new Date();
 var count = Math.floor(endDate.getTime() - d.getTime());
 if (count > 0) {
  var miliseconds = toSt3(count%1000); count = Math.floor(count/1000);
  var seconds = toSt2(count%60); count = Math.floor(count/60);
  var minutes = toSt2(count%60); count = Math.floor(count/60);
  var hours = toSt2(count%24); count = Math.floor(count/24);
  var days = count;
  document.getElementById('c1').innerHTML = days + ' TAGE';
  document.getElementById('c2').innerHTML = hours + ':' + minutes + ':' + seconds + '.' + miliseconds;
  setTimeout('countdown()', 100);
 }

}
 
Zuletzt bearbeitet von einem Moderator:
Hoffe das dies auch eine Akzeptable Lösung ist.

nicht wirklich, dann kannst du gleich auf den parameter verzichten und die globale variable nutzen, da du den parameter nur nutzt um die globale variable zu setzen.
das macht es noch unübersichtlicher als nur mit der globalen variablen zu arbeiten.
globale variablen sind aber grundsätzlich zu vermeiden.
mach es doch so wie ich es vorgeschlagen habe. was spricht dagegen?
oder so
Code:
<script>
function countdown(end_date)
{
  var end = new Date(end_date); //übergabeparameter klappt nicht
  function toSt2(n) {
    var s = '';
    if (n < 10) {
     s += '0';
    }
    return (s + n).toString();
  }
  
  function toSt3(n) {
   var s = '';
   if (n < 10) {
    s += '00';
   }
   else if (n < 100) {
    s += '0';
   }
   return (s + n).toString();
  }
  
  function run()
  {
   var d = new Date();
   var count = Math.floor(end.getTime() - d.getTime());
   if (count > 0) {
    var miliseconds = toSt3(count%1000); count = Math.floor(count/1000);
    var seconds = toSt2(count%60); count = Math.floor(count/60);
    var minutes = toSt2(count%60); count = Math.floor(count/60);
    var hours = toSt2(count%24); count = Math.floor(count/24);
    var days = count;
    document.getElementById('c1').innerHTML = days + ' TAGE';
    document.getElementById('c2').innerHTML = hours + ':' + minutes + ':' + seconds + '.' + miliseconds;
    setTimeout(run, 100);
   }
  }
  run();
}
countdown("December 24, 2016 18:00:00");
</script>
 
Zurück
Oben