js 倒计时不动了

我读取后台的当前时间,自己设置的结束时间,但在页面,倒计时并不会动,要刷新时间才变,请帮我看看要怎么在页面倒计时functiongetRTime(){varEndTime... 我读取后台的当前时间,自己设置的结束时间,但在页面,倒计时并不会动,要刷新时间才变,请帮我看看要怎么在页面倒计时
function getRTime() {
var EndTime = new Date('2014/12/5 21:30:00');
var NowTime = new Date('<%=startTime %>');
var t = EndTime.getTime() - NowTime.getTime();
var d = Math.floor(t / 1000 / 60 / 60 / 24);
var h = Math.floor(t / 1000 / 60 / 60 % 24);
var m = Math.floor(t / 1000 / 60 % 60);
var s = Math.floor(t / 1000 % 60);
document.getElementById("t_d").innerHTML = d + " ";
document.getElementById("t_h").innerHTML = h + "";
document.getElementById("t_m").innerHTML = m + "";
document.getElementById("t_s").innerHTML = s;
var in1 = document.getElementById("Button1");
var in2 = document.getElementById("Button2");
if (EndTime <= NowTime) {
in1.style.display = "none";
in2.style.display = 'block';
document.getElementById("t_d").innerHTML = + " ";
document.getElementById("t_h").innerHTML = "00" + "";
document.getElementById("t_m").innerHTML = "00" + "";
document.getElementById("t_s").innerHTML = "00";
window.clearInterval(time);
}
}
var time = setInterval(getRTime, 1000);
展开
 我来答
kasim416
推荐于2017-09-29 · TA获得超过707个赞
知道小有建树答主
回答量:351
采纳率:100%
帮助的人:293万
展开全部

楼主的问题在于没有充分理解动态页面的含义

楼主的页面只有在刷新的时候,服务器才对应的解释一次页面,也就是说,是在刷新时var NowTime = new Date('<%=startTime %>');的时间就已经是写死的了,不会在改变


如果想通过线程实时刷新服务器时间,那么就用Ajax向服务器实时申请就好了。楼主这么写动态页面肯定是不行的,除非...这么改一下


在if (EndTime <= NowTime) 上面加一句


window.location = window.location。让线程每一秒刷新一次页面。不停地让服务器去解释新的时间。


本人不是做jsp的,擅长php。楼主先试试这个代码

 function getRTime() {
            var EndTime = new Date('2014/12/5 21:30:00');
            var NowTime;
            $.ajax({
            url:"test.jsp",
    type:"POST",
    //data:{str:""},
    error: function(){alert("error");},
    success: function(data){NowTime = new Data(data)}
    });
            
           var t = EndTime.getTime() - NowTime.getTime();
                var d = Math.floor(t / 1000 / 60 / 60 / 24);
                var h = Math.floor(t / 1000 / 60 / 60 % 24);
                var m = Math.floor(t / 1000 / 60 % 60);
                var s = Math.floor(t / 1000 % 60);
                document.getElementById("t_d").innerHTML = d + " ";
                document.getElementById("t_h").innerHTML = h + "";
                document.getElementById("t_m").innerHTML = m + "";
                document.getElementById("t_s").innerHTML = s;
                var in1 = document.getElementById("Button1");
                var in2 = document.getElementById("Button2");
                if (EndTime <= NowTime) {
                    in1.style.display = "none";
                    in2.style.display = 'block';
                    document.getElementById("t_d").innerHTML =    + " ";
                    document.getElementById("t_h").innerHTML = "00" + "";
                    document.getElementById("t_m").innerHTML = "00" + "";
                    document.getElementById("t_s").innerHTML = "00";
                    window.clearInterval(time);
                }
            }
            var time = setInterval(getRTime, 1000);


test.jsp:

<% out.println(new Date()); %>
追问
你好,请问你的
test.jsp:

是放在哪里的
追答
如果显示时间的页面是index.jsp那么test.jsp就放在和index.jsp的同一目录下就行
yfcp
2014-11-11 · 知道合伙人软件行家
yfcp
知道合伙人软件行家
采纳数:1748 获赞数:5545
有多年网站建设相关工作经验。熟悉ASP、ASP.net、VB、JavaScript、HTML等语言和CSS、Ajax等相关技术。

向TA提问 私信TA
展开全部
<SCRIPT>
 function getRTime(){
           var tt = new Date();
           var EndTime = new Date('2014/12/5 21:30:00');
           var NowTime = new Date(tt.getFullYear()+"/"+tt.getMonth()+"/"+tt.getDate()+" "+tt.getHours()+":"+tt.getMinutes()+":"+tt.getSeconds());//获取当前时间
           var t = EndTime.getTime() - NowTime.getTime();
                var d = Math.floor(t / 1000 / 60 / 60 / 24);
                var h = Math.floor(t / 1000 / 60 / 60 % 24);
                var m = Math.floor(t / 1000 / 60 % 60);
                var s = Math.floor(t / 1000 % 60);
                document.getElementById("t_d").innerHTML = d + " ";
                document.getElementById("t_h").innerHTML = h + "";
                document.getElementById("t_m").innerHTML = m + "";
                document.getElementById("t_s").innerHTML = s;
                var in1 = document.getElementById("Button1");
                var in2 = document.getElementById("Button2");
                if (EndTime <= NowTime) {
                    in1.style.display = "none";
                    in2.style.display = 'block';
                    document.getElementById("t_d").innerHTML =    + " ";
 document.getElementById("t_h").innerHTML = "00" + "";
                    document.getElementById("t_m").innerHTML = "00" + "";
                    document.getElementById("t_s").innerHTML = "00";
                    window.clearInterval(time);
                }
            }
            var time = setInterval(getRTime, 1000);
 </script>
<div id="t_d"></div><!--测试输出--!>
<div id="t_h"></div>
<div id="t_m"></div>
<div id="t_s"></div>
以上代码测试完成。
追问
请问可以符合我的情况吗,还没测试,就是想问,我读取的是后台服务器的时间,你这可以吗
追答
这个不是读取后台服务器时间的,是NowTime是用js获取的本机电脑的时间。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangqi0192
2014-11-12 · TA获得超过2387个赞
知道大有可为答主
回答量:1417
采纳率:0%
帮助的人:1222万
展开全部
var time=setInterval("getRTime()",1000) 换成这种写法 应该就能动
你看你的代码 getRTime这是什么呢 我们应该是调用函数名吧 一个函数 怎么会没有括号呢
希望能帮到你 谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小筠挖呀挖
2014-11-11 · 超过18用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:59.2万
展开全部

你每次执行getRTime的时间都是同一个,当然不会变,几种解决方法

  1. 放弃服务端时间,var NowTime = new Date('<%=startTime %>');改成var NowTime = new Date();

  2. NowTime每次都通过ajax获取

追问
请问第二步的具体代码是什么,可以说说看吗,OK的话再加100分~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式