Не удается отобразить значение php внутри javascript

var countDownDate = new Date("<?php echo file_get_contents('wipetime.txt');?>").getTime();

Пытаюсь сделать таймер обратного отсчета. Файл "wipetime.txt" меняется каждые несколько дней, поэтому я пытаюсь сделать это так, чтобы я мог получить файл, когда страница загрузится и обратный отсчет до этой даты.

Проблема в том, что если я повторяю это значение php где-нибудь на странице, оно работает. Он отображает содержимое файла. Однако, если бы я повторил его внутри countDownDate или даже в предупреждении, я ничего не получил бы. Никакой ошибки, просто ничего.

Я вообще не вижу ничего плохого.

Обновлено: вот и все, если вы хотите знать

<!--Whitelist timer-->
<script>
var countDownDate = new Date("<?php echo file_get_contents('wipetime.txt');?>").getTime();
var x = setInterval(function() {
  var now = new Date().getTime();
  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("countdown").innerHTML = "Whitelist expires in " + days + "d " + hours + "h "
  + minutes + "m " + seconds + "s ";
  if (distance < 0) {
    clearInterval(x);
    document.getElementById("countdown").innerHTML = "EXPIRED";
  }
}, 1000);
</script>

Можете ли вы показать сгенерированный html? Покажите нам, что появляется в разделе page-source / view-source. Это тоже файл .js?

Ibu 01.10.2018 00:38

И мне очень жаль, если информация, которую я дал, является расплывчатой. Я действительно не знаю, что еще сказать, это действительно базовое и / должно / работать, но по какой-то причине я просто ничего не получаю. Я не замечаю чего-то глупого?

Syllith 01.10.2018 00:39

Проблема в том, что мы не можем сказать, что это за сгенерированный код на странице. Мы не можем сказать, делаете ли вы это в файле php или файле js.

Ibu 01.10.2018 00:42

var countDownDate = новая дата ("05 октября 2018 г. 06:39:03") .getTime (); Это то, о чем говорит хромированная консоль. Вся страница находится на php, но конкретный javascript находится в конце страницы

Syllith 01.10.2018 00:43

Если я вставлю 05 октября 2018 г. 06:39:03 в кавычки, а не в php, это сработает, но это означает, что я не могу получить дату динамически, что я и пытаюсь сделать. Если я использую сценарий, который опубликовал выше, он вообще ничего не отображает

Syllith 01.10.2018 00:45

Сделайте console.info(countDownDate); после его настройки. У меня сложилось впечатление, что текстовый файл содержит специальный символ, который делает недействительным время.

Ibu 01.10.2018 00:50

Эй, вот и все, мой человек! Я должен был понять это раньше, но в моем файле была лишняя пустая строка, которая отбрасывала все. Я не видел этого, пока вы не сказали мне проверить журнал. Ценить это

Syllith 01.10.2018 00:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
124
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть вероятность, что файл wipetime.txt содержит некоторые специальные символы (возможно, возврат каретки). Вы можете сделать две вещи:

  1. Вручную проверьте файл на предмет артефактов и удалите их.
  2. Вам следует обрезать содержимое.

Код:

<?php
$content = file_get_contents('wipetime.txt');
$timeStr = trim($content); // should remove trailing characters like new lines. 
?>

var countDownDate = new Date("<?php echo $timeStr;?>").getTime();

Я создаю wipetime.txt из командной строки в Linux и по какой-то причине выводит дополнительную строку, поэтому этот ответ работает отлично.

Syllith 01.10.2018 01:01

Им не повезет, если значение по какой-то причине содержит ". json_encode() - удобный способ избежать вставки в JavaScript.

miken32 01.10.2018 01:10

Другие вопросы по теме