Таймер обратного отсчета в Google Sheets - PullRequest
1 голос
/ 03 ноября 2019

Я искал другие вопросы и в Google / YouTube, и из того, что я нашел, кажется, что это возможно, но я не нашел этот точный вариант использования в качестве примера для извлечения. И предисловие, у меня есть небольшое практическое знание кодирования, но не очень много.

Вот что я пытаюсь сделать: я хочу создать таймер обратного отсчета в Google Sheetsс 2 возможными функциями (в зависимости от варианта использования):
1) где я могу указать конечную дату, до которой таймер обратный отсчет обратится, либо в конкретной ячейке, либо в самом коде.
2) с использованием динамическогодата (то есть 30 дней с даты создания таймера)

Итак, где я застрял ... Я попытался использовать script.google.com и вставил этот скрипт в таймер обратного отсчета, который я нашел в Интернете:

<!-- Display the countdown timer in an element -->
<p id="demo"></p>

<script>
// Set the date we're counting down to
var countDownDate = new Date("Jan 5, 2021 15:37:25").getTime();

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

  // Get today's date and time
  var now = new Date().getTime();

  // Find the distance between now and 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);

  // Display the result in the element with id="demo"
  document.getElementById("demo").innerHTML = days + "d " + hours + "h "
  + minutes + "m " + seconds + "s ";

  // If the count down is finished, write some text
  if (distance < 0) {
    clearInterval(x);
    document.getElementById("demo").innerHTML = "EXPIRED";
  }
}, 1000);
</script>

Но когда я запускаю код, я получаю «Синтаксическая ошибка. (Строка 7, файл« Обратный отсчет »)».

Какие изменения необходимо внести в код, чтобы он работал? Или я использую слишком сложный код для создания таймера, и есть гораздо более простой способ?

1 Ответ

1 голос
/ 03 ноября 2019

Вы сохранили это как HTML? Или как JS? Потому что вы должны сохранить его как .html, так как ваш Javascript находится внутри тегов, а не в виде отдельного файла. Код, который вы извлекли из w3schools, это просто фрагмент, я добавил теги, и он работает просто отлично. В своем примере фрагмента вы также вставили его в поле Javascript вместо поля HTML. Попробуйте этот пример, это именно тот код, который у вас был!

<!DOCTYPE HTML>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
p {
  text-align: center;
  font-size: 60px;
  margin-top: 0px;
}
</style>
</head>
<body>

<p id="demo"></p>

<script>
// Set the date we're counting down to
var countDownDate = new Date("Jan 5, 2021 15:37:25").getTime();

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

  // Get today's date and time
  var now = new Date().getTime();
    
  // Find the distance between now and 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("demo").innerHTML = days + "d " + hours + "h "
  + minutes + "m " + seconds + "s ";
    
  // If the count down is over, write some text 
  if (distance < 0) {
    clearInterval(x);
    document.getElementById("demo").innerHTML = "EXPIRED";
  }
}, 1000);
</script>

</body>

Другой способ сделать это - фактически разделить ваш javascript и html на отдельные файлы, чтобы сохранить его в чистоте и разделить сценарии и HTML. Например, назовите ваш HTML index.html и ваш скрипт timer.js. Затем в своем HTML вместо большого двоичного объекта скрипта вы просто делаете <script src="/timer.js"></script>

// Save this as for example timer.js

// Set the date we're counting down to
var countDownDate = new Date("Jan 5, 2021 15:37:25").getTime();

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

  // Get today's date and time
  var now = new Date().getTime();
    
  // Find the distance between now and 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("demo").innerHTML = days + "d " + hours + "h "
  + minutes + "m " + seconds + "s ";
    
  // If the count down is over, write some text 
  if (distance < 0) {
    clearInterval(x);
    document.getElementById("demo").innerHTML = "EXPIRED";
  }
}, 1000);
<!-- Save this as index.html -->

<!DOCTYPE HTML>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
p {
  text-align: center;
  font-size: 60px;
  margin-top: 0px;
}
</style>
</head>
<body>

<p id="demo"></p>

<!-- Load the Javascript from a separate file called timer.js -->
<script src="/timer.js"></script>

</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...