2017-02-08 3 views
0

Привет, я так близко к созданию этого счетчика времени. Я предполагаю, потому что я использовал datenew Date в своем коде, чтобы я не получил код для работы? Я полагаю, что должен использовать datedatetimetime? Когда я делаю `puts '# {reservation.due_date}, я получаю правильный duedate, поэтому я растерялся, почему счетчик не работает.Сделать таймер обратного отсчета времени в рельсах


 

 
<div id="dueDate-counter"> 
 
    <table> 
 
    \t <tr> 
 
    \t \t <td>days</td> 
 
    \t \t <td>hrs</td> 
 
    \t \t <td>mns</td> 
 
    \t \t <td>secs</td> 
 
    \t </tr> 
 
    \t <tr> 
 
    \t \t <td id="days"></td> 
 
    \t \t <td id="hours"></td> 
 
    \t \t <td id="minutes"></td> 
 
    \t \t <td id="seconds"></td> 
 
    \t </tr> 
 
    \t \t \t \t \t \t \t \t 
 
    </table> 
 

 
    \t <script type="text/javascript"> 
 
    \t \t function countdown() { 
 
    \t \t \t var now = new Date(); 
 
    \t \t \t var eventDate = new Date(<%= reservation.due_date %>); 
 
    \t \t \t <%= puts "here is reservation !!!!!!!" %>; 
 
    \t \t \t <%= puts "#{reservation.due_date}" %>; 
 
    \t \t \t var currentTime = now.getTime(); 
 
    \t \t \t var eventTime = eventDate.getTime(); 
 

 
    \t \t \t var remTime = eventTime - currentTime; 
 

 
    \t \t \t var s = Math.floor(remTime/1000); 
 
    \t \t \t var m = Math.floor(s/60); 
 
    \t \t \t var h = Math.floor(m/60); 
 
    \t \t \t var d = Math.floor(h/24); 
 

 
    \t \t \t h %= 24; 
 
    \t \t \t m %= 60; 
 
    \t \t \t s %= 60; 
 

 
    \t \t \t h = (h < 10) ? "0" + h : h; 
 
    \t \t \t m = (m < 10) ? "0" + m : m; 
 
    \t \t \t s = (s < 10) ? "0" + s : s; 
 

 
    \t \t \t document.getElementById("days").textContent = d; 
 
    \t \t \t document.getElementById("days").innerText = d; 
 

 
    \t \t \t document.getElementById("hours").textContent = h; 
 
    \t \t \t document.getElementById("minutes").textContent = m; 
 
    \t \t \t document.getElementById("seconds").textContent = s; 
 

 
    \t \t \t \t setTimeout(countdown, 1000); 
 
    \t \t \t \t \t \t \t \t } 
 

 
    \t \t \t \t \t \t \t \t countdown(); 
 

 
    \t \t \t \t \t \t \t </script> 
 
    \t \t \t \t \t \t \t 
 
    \t \t \t \t \t \t </div>

им получать пустые данные, чтобы показать в dayshoursetc при просмотре страницы. вниз в начале script Я добавил eventDate Я положил due_date в качестве новой даты .. теперь запомните его формат DateTime, поэтому он имеет час минут в базе данных. Так это не чтение, потому что я сделал это new Date есть ли один для datetime ?? Спасибо!!

reservation.due_date показывает в БД, как, например: 2017-02-09 00:02:00

ответ

1

Вам просто нужно обернуть вывод даты с цитатой

var eventDate = new Date("<%= reservation.due_date %>"); 

Если вы этого не сделаете, вы получите эту ошибку на вашем консольном браузере

Uncaught SyntaxError: missing) after argument list

Смежные вопросы