Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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 为什么我的倒数计时器在2秒后跳了20分钟?_Javascript_Time - Fatal编程技术网

Javascript 为什么我的倒数计时器在2秒后跳了20分钟?

Javascript 为什么我的倒数计时器在2秒后跳了20分钟?,javascript,time,Javascript,Time,我的setInterval/timer()函数代码中有一个奇怪的错误 我有一个20分钟(0秒)的倒计时,它应该每秒钟倒一次,但倒计时很奇怪。(见下文CSV) 我试着用分和秒围绕解析,但它只会使显示的时间的输出变为NaN** var n=setInterval(计时器,1000); 函数计时器(){ var time=document.getElementById('timer').innerHTML; var分钟=时间[1]+时间[2]; var秒=时间[12]+时间[13]; 如果(秒==0

我的setInterval/timer()函数代码中有一个奇怪的错误

我有一个20分钟(0秒)的倒计时,它应该每秒钟倒一次,但倒计时很奇怪。(见下文CSV)

我试着用分和秒围绕解析,但它只会使显示的
时间
的输出变为NaN**

var n=setInterval(计时器,1000);
函数计时器(){
var time=document.getElementById('timer').innerHTML;
var分钟=时间[1]+时间[2];
var秒=时间[12]+时间[13];
如果(秒==0){
分钟--;
秒=59;
}否则{
秒--;
}
document.getElementById('timer').innerHTML=(分钟+'minutes'+秒+'seconds');
}


30分00秒
因为每次函数调用都会覆盖变量,所以请将变量置于函数之外:

var n=setInterval(计时器,1000);
var time=document.getElementById('timer').innerHTML;
var分钟=时间[1]+时间[2];
var秒=时间[12]+时间[13];
函数计时器(){
如果(秒==0){
分钟--;
秒=59;
}否则{
秒--;
}
document.getElementById('timer').innerHTML=(分钟+'minutes'+秒+'seconds');
}


30分00秒
错误在于如何从字符串
时间

For the string: "30 minutes 00 seconds"
time[1] = 0
time[2] = " "
time[1]
time[2]
恰好是空字符串时,它给出
NaN

在这种情况下,对字符串的
--
操作将给出
NaN

我将依靠将短语拆分为标记,而不是获得单个字符。
尝试:

var n=setInterval(计时器,1000);
函数计时器(){
var time=document.getElementById('timer').innerHTML.split(“”;//将字符串“30分钟00秒”拆分为一个包含4个元素的数组。
var分钟=时间[0];
var秒=时间[2];
如果(秒==0){
分钟--;
秒=59;
}否则{
秒--;
}
document.getElementById('timer').innerHTML=(分钟+'minutes'+秒+'seconds');
}

30分00秒
并使延迟稍微小于1000秒,因为根据需要显示秒数时的部分秒数,可能会跳过一秒。我通常用900毫秒。