一个视频定时播放页面,系统节目播放时间定在13:00-16:00期间进行,现需要一个动态显示当前进行了多长时间的功能。我实现方法如下:
var nowdate = new Date();
var hour = nowdate.getHours();
var munit = nowdate.getMinutes();

var stm = Request["starttime"]; //这个时间是排好的如:13:00-16:00
var timearr = new Array();
timearr = stm.split(':');
var shour = Number(hour)-Number(timearr[0]);
var smin=0;                        //当前已经进行了多少分钟多少秒(动态显示)
if(Number(munit)<Number(timearr[1])){
smin=Number(munit)-Number(timearr[1])+60;
shour=shour-1;
}else{
smin = Number(munit)-Number(timearr[1]);
}

var muni = Number(munit);
if(muni<10&&muni>=0){
nowdate = hour + ":" +"0"+ munit;
}else{
nowdate = hour + ":" + munit;
}
if(smin<10&&smin>=0){
smin = shour +":"+"0"+smin;
}else{
smin = shour +":"+ smin;
}
var s_time = document.getElementById('starttime'); //
var u_time = document.getElementById('usetime');
var div = document.createElement("span");
var div1 = document.createElement("span");
    div.innerHTML = nowdate;
    div1.innerHTML = smin;
    s_time.appendChild(div);
    u_time.appendChild(div1);
var init =0;
init = Request["bypass_init"];
if(init!=1){
OnLoad(uuid,urlname);
}
}
function TimerStart(func,delay)
{
    var TimerID = window.setInterval(
function()
{
if(!func())
{
window.clearInterval(TimerID);
};
},
delay
);
}
现在遇到的问题是,以上代码必需需要刷新页面“当前已经进行多少分钟”这个时间才更新,我需要的是动态显示进行了多长时间。

解决方案 »

  1.   

    function TimerStart(func,delay)
    {
        var TimerID = window.setInterval(
        function()
        {
            if(!func())
            {
                window.clearInterval(TimerID);
            };
        },
        delay
        );
    }你的这个方法调用的 func() 方法没有返回值吧?(没有返回值就是undefined --!undefined就是true,所以执行一次就没有了...)
      

  2.   

    LZ代码有点长,没耐心看完……
    照着大概的意思自己写了一段,希望能有帮助<script language="JavaScript">
    var NowTime = new Date();//取
    var startTime = new Date(NowTime.getYear(),NowTime.getMonth(),NowTime.getDate(),13,00,00);
    //alert(startTime);
    var nMS = NowTime.getTime() - startTime.getTime();
    function GetRTime(){
    var nH=Math.floor(nMS/(1000*60*60)) % 24;
    var nM=Math.floor(nMS/(1000*60)) % 60;
    var nS=Math.floor(nMS/1000) % 60;
     document.getElementById("RemainH").innerHTML = nH<10 ? "0"+nH : nH;
     document.getElementById("RemainM").innerHTML = nM<10 ? "0"+nM : nM;
     document.getElementById("RemainS").innerHTML = nS<10 ? "0"+nS : nS;
    setTimeout("GetRTime()",1000);
    nMS += 1000;
    }
    window.onload=GetRTime;
    </script>  <div id="CountMsg">已进行了<strong id="RemainH">XX</strong>时<strong id="RemainM">XX</strong>分<strong id="RemainS">XX</strong>秒</div>