Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用查询数据库调用ejs/express中的setInterval()_Javascript_Mysql_Node.js_Express_Ejs - Fatal编程技术网

Javascript 使用查询数据库调用ejs/express中的setInterval()

Javascript 使用查询数据库调用ejs/express中的setInterval(),javascript,mysql,node.js,express,ejs,Javascript,Mysql,Node.js,Express,Ejs,我已经看过了,但这并不能解决我的任务 手头的问题是: 我在一个事件中有一个日期。我的MySQL数据库中的date列如下所示: app.get('/', (req, res) => { var query1='SELECT event_date,... FROM event..'; connection.query(query1, function(err,results){ if (results) res.render('index', {data: results});

我已经看过了,但这并不能解决我的任务

手头的问题是: 我在一个
事件中有一个日期。我的MySQL数据库中的date
列如下所示:

app.get('/', (req, res) => {

 var query1='SELECT event_date,... FROM event..';
  connection.query(query1, function(err,results){
    if (results) res.render('index', {data: results});
  });

});
我想要的是在我的页面上启动一个计时器,它将记录
新日期()之间的差异和我的存储日期(如)

index.ejs

    <%  data.some(function(d,index){    %>

        <%= d.event_date %> //this prints the data here obviously
        <% **How to implement the setInterval() here??** %> 

    <% })%>

//很明显,这会在这里打印数据
我尝试了两种或两种以上的方法,但都没有成功。我遗漏了什么概念?如何做到这一点


谢谢。

试试这样做(倒计时功能取自)

EJS模板代码:

<% data1.forEach(function(d, index){ %>
    <div id="countdown<%= index %>"></div>
<% }) %>

<script>

  <% data1.forEach(function(d, index){   %>
      CountDownTimer("<%= d.event_date %>", "countdown<%= index %>");
  <% })%>
  

  function CountDownTimer(dt, id) {
    var end = new Date(dt);

    var _second = 1000;
    var _minute = _second * 60;
    var _hour = _minute * 60;
    var _day = _hour * 24;
    var timer;

    function showRemaining() {
      var now = new Date();
      var distance = end - now;
      if (distance < 0) {

        clearInterval(timer);
        document.getElementById(id).innerHTML = 'EXPIRED!';

        return;
      }
      var days = Math.floor(distance / _day);
      var hours = Math.floor((distance % _day) / _hour);
      var minutes = Math.floor((distance % _hour) / _minute);
      var seconds = Math.floor((distance % _minute) / _second);

      document.getElementById(id).innerHTML = days + 'days ';
      document.getElementById(id).innerHTML += hours + 'hrs ';
      document.getElementById(id).innerHTML += minutes + 'mins ';
      document.getElementById(id).innerHTML += seconds + 'secs';
    }

    timer = setInterval(showRemaining, 1000);
  }
</script>

倒计时器(“倒计时”);
功能倒计时(dt,id){
var结束=新日期(dt);
var_秒=1000;
var _minute=_second*60;
变量(小时)=(分钟)*60 ;;
var _日=_小时*24;
无功定时器;
函数showLeving(){
var now=新日期();
var距离=结束-现在;
如果(距离<0){
清除间隔(计时器);
document.getElementById(id).innerHTML='EXPIRED!';
返回;
}
var天数=数学楼层(距离/天数);
var小时=数学楼层((距离%\u天)/\u小时);
var分钟=数学楼层(距离%\u小时)/\u分钟);
var秒=数学楼层((距离%\u分钟)/\u秒);
document.getElementById(id).innerHTML=days+'days';
document.getElementById(id).innerHTML+=hours+'hrs';
document.getElementById(id).innerHTML+=minutes+'mins';
document.getElementById(id).innerHTML+=seconds+'secs';
}
定时器=设置间隔(显示剩余,1000);
}

在这里,我们将查询一次数据库(在呈现页面时),然后客户端javascript将处理基于时间间隔的倒计时更新。

Hmm。。奇怪。距离仅为数据库中第一个元素/事件运行一次的事件。正如我所说的,有多个事件,有各自的事件日期。更新了我的问题。(参见index.ejs)@just好奇请查看多个事件的更新答案。谢谢你抽出时间。谢谢。