Javascript 这个计时器有什么问题[JS]

Javascript 这个计时器有什么问题[JS],javascript,time,timer,setinterval,Javascript,Time,Timer,Setinterval,这个计时器有什么问题[JS] <script type="text/javascript"> var remain = "14:14"; setInterval ("timer()", 660); function timer(){ var remainM = parseInt(remain.split(":")[0]); var remainS = parseInt(remain.split(":")[1]);

这个计时器有什么问题[JS]

<script type="text/javascript">

    var remain = "14:14";
    setInterval ("timer()", 660);

    function timer(){

        var remainM = parseInt(remain.split(":")[0]);
        var remainS = parseInt(remain.split(":")[1]);

        //document.getElementById("hello").innerHTML = parseInt(remainS);

        if (remainS==0) {
            if (remainM==0) {

            } else {
                remainM = parseInt(remainM) - 1;
                remainS = 59;
            }
        } else {
            remainS = parseInt(remainS) - 1;
        }

        var remainSr = String(remainS);
        var remainMr = String(remainM);

        if (parseInt(remainS)<=9) {remainSr = "0" + String(remainS);}
        if (parseInt(remainM)<=9) {remainMr = "0" + String(remainM);}

        remain = String(remainMr) + ":" + String(remainSr);
        document.getElementById("hello").innerHTML = remain;

    }

</script>

var remain=“14:14”;
设置间隔(“计时器()”,660);
函数计时器(){
var remainM=parseInt(remain.split(“:”[0]);
var resists=parseInt(resiste.split(“:”[1]);
//document.getElementById(“hello”).innerHTML=parseInt(剩余);
如果(剩余==0){
如果(remainM==0){
}否则{
remainM=parseInt(remainM)-1;
剩余=59;
}
}否则{
resistes=parseInt(resistes)-1;
}
var remainSr=字符串(剩余);
var remainMr=字符串(remainM);

如果(parseInt(resists)您需要在
parseInt
中指定基数。如果您执行
parseInt(“09”)
,则要求解析八进制数字9,这是一个错误。请参阅您需要在
parseInt
中指定基数。如果执行
parseInt(“09”)
,您要求解析八进制数字9,这是一个错误。请参阅
parseInt(“09”)
返回0。如果将其更改为
parseFloat
parseInt(“09”,10)
,它将起作用。

parseInt(“09”)
返回0。如果将其更改为
parseFloat
parseInt(“09”,10)
它会工作。

忽略parseInt的第二个参数是历史错误

检查这篇文章:

请尝试以下版本:

<script type="text/javascript">
var remain = "14:14";
setInterval("timer()", 660);

function timer() {
    var remainM = parseInt(remain.split(":")[0], 10);
    var remainS = parseInt(remain.split(":")[1], 10); 
    if (remainS == 0) {
        if (remainM == 0) {} else {
            remainM = parseInt(remainM) - 1;
            remainS = 59;
        }
    } else {
        remainS = parseInt(remainS) - 1;
    }
    var remainSr = String(remainS);
    var remainMr = String(remainM);
    if (parseInt(remainS) <= 9) {
        remainSr = "0" + String(remainS);
    }
    if (parseInt(remainM) <= 9) {
        remainMr = "0" + String(remainM);
    }
    remain = String(remainMr) + ":" + String(remainSr);
    document.getElementById("hello").innerHTML = remain;
}
</script> 

var remain=“14:14”;
设置间隔(“计时器()”,660);
函数计时器(){
var remainM=parseInt(remain.split(“:”[0],10);
var resists=parseInt(resiste.split(“:”[1],10));
如果(剩余==0){
如果(remainM==0){}else{
remainM=parseInt(remainM)-1;
剩余=59;
}
}否则{
resistes=parseInt(resistes)-1;
}
var remainSr=字符串(剩余);
var remainMr=字符串(remainM);

if(parseInt(resides)忽略parseInt的第二个参数是历史错误

检查这篇文章:

请尝试以下版本:

<script type="text/javascript">
var remain = "14:14";
setInterval("timer()", 660);

function timer() {
    var remainM = parseInt(remain.split(":")[0], 10);
    var remainS = parseInt(remain.split(":")[1], 10); 
    if (remainS == 0) {
        if (remainM == 0) {} else {
            remainM = parseInt(remainM) - 1;
            remainS = 59;
        }
    } else {
        remainS = parseInt(remainS) - 1;
    }
    var remainSr = String(remainS);
    var remainMr = String(remainM);
    if (parseInt(remainS) <= 9) {
        remainSr = "0" + String(remainS);
    }
    if (parseInt(remainM) <= 9) {
        remainMr = "0" + String(remainM);
    }
    remain = String(remainMr) + ":" + String(remainSr);
    document.getElementById("hello").innerHTML = remain;
}
</script> 

var remain=“14:14”;
设置间隔(“计时器()”,660);
函数计时器(){
var remainM=parseInt(remain.split(“:”[0],10);
var resists=parseInt(resiste.split(“:”[1],10));
如果(剩余==0){
如果(remainM==0){}else{
remainM=parseInt(remainM)-1;
剩余=59;
}
}否则{
resistes=parseInt(resistes)-1;
}
var remainSr=字符串(剩余);
var remainMr=字符串(remainM);

如果(parseInt(resists)则
parseInt()
方法实际上返回了它找到的第一个整数,因此当您期望9时,您将从'09'返回0。尝试在那里使用
parseFloat()
方法,您应该是金色的。它将返回您期望的'9'。我希望这有帮助!!

parseInt()
方法实际上返回它找到的第一个整数,因此当您预期为9时,您将从“09”返回0。请尝试使用
parseFloat()
方法,您应该是金色的。它将返回您所期望的“9”。我希望这会有所帮助!!

其他人已经讨论了直接的问题-您意外地将数字视为八进制而不是十进制-但更深层次的问题是,您将数字存储为字符串。不断地从st转换到st环是复杂且容易出错的。更好的设计是将时间存储为两个数字,并具有一个函数,可根据需要将这些数字转换为字符串。以下是一个将数字与其字符串表示形式分开的版本:

var remain = {
    mins: 14, 
    secs: 14,
    toString: function () {
        var pad = function(num) { return (num < 10 ? "0" : "") + num; };
        return pad(this.mins) + ":" + pad(this.secs);
    }
};

setInterval (timer, 660);

function timer() {
    if (remain.secs === 0) {
        if (remain.mins > 0) {
            remain.mins -= 1;
            remain.secs = 59;
        }
    } else {
        remain.secs -= 1;
    }
    document.document.getElementById("hello").innerHTML = remain;
}
var剩余={
分钟:14,
秘书:14,
toString:函数(){
var pad=函数(num){return(num<10?:“)+num;};
返回pad(this.mins)+“:”+pad(this.secs);
}
};
设置间隔(定时器,660);
函数计时器(){
如果(remaine.secs==0){
如果(保持0.min>0){
剩余1.min-=1;
保持1.5秒=59;
}
}否则{
剩余1.secs-=1;
}
document.document.getElementById(“hello”).innerHTML=remain;
}

其他人已经讨论了直接的问题——你不小心将数字视为八进制而不是十进制——但更深层次的问题是你将数字存储为字符串。不断地在字符串之间进行转换是复杂的,而且容易出错。更好的设计是将时间存储为两个数字并具有一个函数将这些数字按需转换为字符串。以下是一个将数字与其字符串表示形式分开的版本:

var remain = {
    mins: 14, 
    secs: 14,
    toString: function () {
        var pad = function(num) { return (num < 10 ? "0" : "") + num; };
        return pad(this.mins) + ":" + pad(this.secs);
    }
};

setInterval (timer, 660);

function timer() {
    if (remain.secs === 0) {
        if (remain.mins > 0) {
            remain.mins -= 1;
            remain.secs = 59;
        }
    } else {
        remain.secs -= 1;
    }
    document.document.getElementById("hello").innerHTML = remain;
}
var剩余={
分钟:14,
秘书:14,
toString:函数(){
var pad=函数(num){return(num<10?:“)+num;};
返回pad(this.mins)+“:”+pad(this.secs);
}
};
设置间隔(定时器,660);
函数计时器(){
如果(remaine.secs==0){
如果(保持0.min>0){
剩余1.min-=1;
保持1.5秒=59;
}
}否则{
剩余1.secs-=1;
}
document.document.getElementById(“hello”).innerHTML=remain;
}

试试看
函数计时器(){
var-sec=0;
var-mm=0;
setInterval(函数(){
如果(秒=10){
document.getElementById('p1')。innerHTML=mm+“:“+”0“+秒;
}
否则{
document.getElementById('p1')。innerHTML=“0”+mm+”:“+“0”+sec;
}
秒=秒+1;
}
否则,如果(秒>=10&&sec=10){
document.getElementById('p1')。innerHTML=mm+“:”+sec;
}
否则{
document.getElementById('p1')。innerHTML=“0”+mm+”:“+sec;
} 
秒=秒+1;
}