Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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中显示毫秒_Javascript_Jquery - Fatal编程技术网

如何在倒计时javascript中显示毫秒

如何在倒计时javascript中显示毫秒,javascript,jquery,Javascript,Jquery,我有一个javascript代码,显示5分钟的倒计时 这是密码 var mins var secs; function cd() { mins = 1 * m("05"); // change minutes here secs = 0 + s(":00"); // change seconds here (always add an additional second to your total) redo(); } function m(obj) { fo

我有一个javascript代码,显示5分钟的倒计时

这是密码

var mins
var secs;

function cd() {
    mins = 1 * m("05"); // change minutes here
    secs = 0 + s(":00"); // change seconds here (always add an additional second to your total)
    redo();
}

function m(obj) {
    for(var i = 0; i < obj.length; i++) {
        if(obj.substring(i, i + 1) == ":")
        break;
    }
    return(obj.substring(0, i));
}

function s(obj) {
    for(var i = 0; i < obj.length; i++) {
        if(obj.substring(i, i + 1) == ":")
        break;
    }
    return(obj.substring(i + 1, obj.length));
}

function dis(mins,secs) {
    var disp;
    if(mins <= 9) {
        disp = " 0";
    } else {
        disp = " ";
    }
    disp += mins + ":";
    if(secs <= 9) {
        disp += "0" + secs;
    } else {
        disp += secs;
    }
    return(disp);
}

function redo() {
    secs--;
    if(secs == -1) {
        secs = 59;
        mins--;
    }

     var timerStr = dis(mins,secs); 
    $("#countDownTimer").text(timerStr);  // setup additional displays here.
    if((mins == 0) && (secs == 0)) {

    } else {
        cd = setTimeout("redo()",1);
    }


}

function init() {
  cd();
}

window.onload = init;
var分钟
var-secs;
函数cd(){
分钟=1*m(“05”);//在此处更改分钟
secs=0+s(“:00”);//在此处更改秒数(始终在总数中再增加一秒)
重做();
}
功能m(obj){
对于(变量i=0;i如果(分钟使用其中一种,例如or,如何


经进一步检查:


您正在使用参数
1
调用超时,这意味着每个计时器“事件”的时间为1毫秒,但您在
redo()函数中将该毫秒事件视为一整秒

redo()应该是:

function redo() {
   s -= 0.001; // subtract 1 millisecond
   if (s < 0) {
      secs = 59.999;
      mins--;
   }
}
函数重做(){
s-=0.001;//减去1毫秒
如果(s<0){
secs=59.999;
分钟--;
}
}
等等。但是,考虑到每毫秒运行一次此代码将给浏览器带来相当大的负载,并且不会以精确的毫秒精度运行。您应该做的是跟踪时间-开始倒计时时,使用日期()记录当前系统时间对象,具有毫秒精度


以比毫秒更长的间隔调用redo()(例如,每200ms/0.2秒),然后从计时器的开始时间中减去该点的系统时间。

我重新编写了代码,将毫秒包括在内。还要确保setTimer设置正确

var mins
var secs;
var ms;

function cd() {
    mins = 1 * m("05"); // change minutes here
    secs = 0 + s(":00"); // change seconds here (always add an additional second to your total)
    ms = 0 + ms(":00");//change millisecons here
    redo();
}

function m(obj) {
    for(var i = 0; i < obj.length; i++) {
        if(obj.substring(i, i + 1) == ":")
        break;
    }
    return(obj.substring(0, i));
}

function s(obj) {
    for(var i = 0; i < obj.length; i++) {
        if(obj.substring(i, i + 1) == ":")
        break;
    }
    return(obj.substring(i + 1, obj.length));
}

function ms(obj) {
    for(var i = 0; i < obj.length; i++) {
        if(obj.substring(i, i + 1) == ":")
        break;
    }
    return(obj.substring(i + 1, obj.length));
}

function dis(mins,secs,ms) {
    var disp;
    if(mins <= 9) {
        disp = " 0";
    } else {
        disp = " ";
    }
    disp += mins + ":";
    if(secs <= 9) {
        disp += "0" + secs;
    } else {
        disp += secs + ":";
    }
    if(ms <= 9) {
        disp += "0" + ms;
    } else {
        disp += ms;
    }
    return(disp);
}

function redo() {
    ms--;
    if(ms == -1) {
        ms = 99;
        secs--;
    }
    if(secs == -1) {
        secs = 59;
        mins--;
    }

     var timerStr = dis(mins,secs,ms); 
    document.getElementById('countdown_fld').innerText=timerStr;  // setup additional displays here.
    if((mins == 0) && (secs == 0) && (ms == 0)) {

    } else {
        cd = setTimeout("redo()",10); //make sure to set the timer right
    }


}

function init() {
  cd();
}
var分钟
var-secs;
var-ms;
函数cd(){
分钟=1*m(“05”);//在此处更改分钟
secs=0+s(“:00”);//在此处更改秒数(始终在总数中再增加一秒)
ms=0+ms(“:00”);//此处更改毫秒
重做();
}
功能m(obj){
对于(变量i=0;iif(mins,但是否有显示毫秒的选项?请参见我的编辑。答案通常是“否”,但根据我链接的第一个答案,这可能是一件好事。我也需要显示毫秒。代码中有一个小的变化,即在每秒钟调用函数,即cd=setTimeout(“redo()”,1000);那么我们应该如何更改它。感谢您的建议JS Date对象有毫秒:可能与see重复。是的,我的代码中有一个小的更改,函数在每秒钟调用一次,即cd=setTimeout(“redo()”,1000);谢谢你的帮助,让我知道毫秒应该是以000为单位的,对吗?。因为1000毫秒=1秒1000=1秒所以…如果你将它设置为100,这将充分模拟毫秒。再次感谢。但它显示从10毫秒开始的倒计时。它应该是从1000毫秒开始的na?是的,你可以…其他两个毫秒数字移动如此快t这是一个模糊:-)。