0

Hi guys I have problem with my timer , single timer is working fine but when I convert it into multiple timer, timer is not working can someone help me please thank you

I added a single timer snippet that is working Thanks in Advance! :)

P.S I cannot use Jquery on this part so it is quite challenging.

// value came here $time_end = sprintf('%013.0f', microtime(true)*1000 + 27000000); 30 minuts timer
var countDownDate = "1506509439553";

// Update the count down every 1 second
var x = setInterval(function() {

  // Get todays date and time
  var now = new Date().getTime();

  // Find the distance between now an the count down date
  var distance = countDownDate - now;

  // Time calculations for days, hours, minutes and seconds
  var days = Math.floor(distance / (1000 * 60 * 60 * 24));
  var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
  var seconds = Math.floor((distance % (1000 * 60)) / 1000);

  // Output the result in an element with id="demo"
  document.getElementById("timer_1").innerHTML = minutes + ":" + seconds + "";
  //id is dynamic timer_<?php echo get_the_ID();?>

  // If the count down is over, write some text 
  if (distance <= 0) {
    clearInterval(x);
    document.getElementById("timer_1").style.display = "none";
  }
}, 1000);
<div id="timer_1"></div>

1
  • Use some closures? Commented Sep 27, 2017 at 8:27

1 Answer 1

1

Simply wrap your existing code into a method, and pass the element id to it.

Demo

startTimer( "timer_1" );
startTimer( "timer_2" );
startTimer( "timer_3" );

function startTimer(elementId) {
  // value came here $time_end = sprintf('%013.0f', microtime(true)*1000 + 27000000); 30 minuts timer
  var countDownDate = "1506509439553";

  // Update the count down every 1 second
  var x = setInterval(function() {

    // Get todays date and time
    var now = new Date().getTime();

    // Find the distance between now an the count down date
    var distance = countDownDate - now;

    // Time calculations for days, hours, minutes and seconds
    var days = Math.floor(distance / (1000 * 60 * 60 * 24));
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);

    // Output the result in an element with id="demo"
    document.getElementById( elementId ).innerHTML = minutes + ":" + seconds + "";
    //id is dynamic timer_<?php echo get_the_ID();?>

    // If the count down is over, write some text 
    if (distance <= 0) {
      clearInterval(x);
      document.getElementById( elementId ).style.display = "none";
    }
  }, 1000);
}
<div id="timer_1"></div>
<div id="timer_2"></div>
<div id="timer_3"></div>

Sign up to request clarification or add additional context in comments.

3 Comments

I think putting the countDownDate as a parameter is also a good practice :)
oh boy thank you so much I spent a lot of time working on this thank you @gurvinder372
@Bartheleway yes, I think this code can be refactored/designed to improve its readability.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.