Скрипт обратного отсчета, вызываемый через функцию, не работает - PullRequest
0 голосов
/ 26 мая 2018

Я новичок в javascript и не программист, поэтому мой вопрос может быть глупым, но я не могу найти выход из этой проблемы.Я использую функцию обратного отсчета, которая работает правильно при вызове с onload тела, но я должен использовать другие сценарии на той же странице, поэтому я должен заставить ее работать в функции, вызываемой через div id.Поэтому я поместил этот скрипт в функцию, но, похоже, он не работает.

Помощь будет принята с благодарностью.

<script>
<?php
echo "var now = new Date(\"$time_fr_js\").getTime();";
echo "var countDownDate = new Date(\"$time_fr_target_js\").getTime();";
?>
function times() {
  (countdown);
  setInterval(otherfunction1, 1000);
  setInterval(otherfunction2, 1000);
}
function countdown() {
  var x = setInterval(function() {';
  var distance = countDownDate - now;
  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);
  document.getElementById("count").innerHTML = hours + ":"
  + minutes + ":" + seconds;
  if (distance < 0) {
    clearInterval(x);
    document.getElementById("count").innerHTML = "<font color=red>countdown timeout</font>";
  }
 }, 1000);
</script>

<body onload="times()">
<div id="count"></div>
some html here
<div id="otherfunction1"></div>
<div id="otherfunction2"></div>

1 Ответ

0 голосов
/ 26 мая 2018

Итак, я сделал несколько изменений в вашем коде, мне пришлось игнорировать otherfunction1 и otherfunction2, поскольку они не казались важными для ваших вопросов обратного отсчета.Смотрите модифицированный код ниже:

var countDownDate = new Date("2018-05-26T15:48:00.000Z").getTime(); // Just use your own end time here
function times() {
  countdown();
}

function countdown() {
  var cd_interval = setInterval(function() {
    var now = new Date().getTime(); // Moved now inside the countdown function since it need to be validated with the current time
    var distance = countDownDate - now;
    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);
    document.getElementById("count").innerHTML = hours + ":" + minutes + ":" + seconds;
    if (distance < 0) {
      clearInterval(cd_interval);
      document.getElementById("count").innerHTML = "<font color=red>countdown timeout</font>";
    }
  }, 1000);
}
<body onload="times()">
  <div id="count"></div>
  some html here
  <div id="otherfunction1"></div>
  <div id="otherfunction2"></div>
</body>

Я добавил несколько комментариев на случай, если некоторые из них не имеют смысла.

...