Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.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变量_Javascript_Node.js_Ejs - Fatal编程技术网

如何让JavaScript文件影响EJS变量

如何让JavaScript文件影响EJS变量,javascript,node.js,ejs,Javascript,Node.js,Ejs,我在index.ejs文件中定义了一个名为complete的ejs变量,并检查用户是否使用以下命令填写了日志: <% if (complete == false) { %> <button class="new_journal">Fill Out Journal<i class="fa fa-plus" aria-hidden="true"></i></button> <% } else { %> <

我在index.ejs文件中定义了一个名为complete的ejs变量,并检查用户是否使用以下命令填写了日志:

<% if (complete == false) { %>
   <button class="new_journal">Fill Out Journal<i class="fa fa-plus" aria-hidden="true"></i></button>  
<% } else { %>
    <div class="new_journal2">You Already Filled Out Your Journal</div>
<% }% >

但是,当计时器达到0时,它不会更改complete的值。

您以错误的方式混淆了客户端javascript和EJB。 根据您的代码,您提到的javascript在客户端运行,而您提到的EJS代码将在服务器端运行,因此此时它无法读取完整的变量值


我看到您在计时器中有一个日期值,所以我希望您有数据服务器端,使用它在服务器端而不是客户端导出完整的变量值。

我不使用ejs,但我猜ejs不会在变量更改时神奇地更新。请注意,setTimeout对于时钟/计时器来说是可怕的,因为它不准确。上面的评论是正确的。EJS仅由服务器端代码更新,并且每次渲染仅计算一次。您无权访问,也不能更改JavaScript中的EJS变量。您必须在JS文件中手动更新模板。@AustinEzell如何更新JS文件中的模板?:P
var hour = 23;
var minutes = 59; 
var seconds  = 60;
var value = 1;
setInterval(function(){
    var time = document.getElementById('timer').innerHTML = "Hours: " + hour + 
    " Minutes: " + minutes + " Seconds: " + seconds;
    seconds -= 1;

    if(seconds == 0) {
        minutes -= 1;
        seconds = 60;
    };

    if(minutes == 0) {
        hour -= 1;
        minutes = 60;
    };

    if(hours == 0) {
        complete = false;    
    }

}, 1000);