Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.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_Html - Fatal编程技术网

如何修复javascript倒计时秒错误

如何修复javascript倒计时秒错误,javascript,html,Javascript,Html,所以我有一个我创建的倒计时计时器 <script type="text/javascript"> var interval; var minutes = 12; var seconds = 32; window.onload = function() { countdown('countdown'); } function countdown(element) { interval = setInterval(function() {

所以我有一个我创建的倒计时计时器

<script type="text/javascript">
var interval;
    var minutes = 12;
    var seconds = 32;
    window.onload = function() {
        countdown('countdown');
}

function countdown(element) {
    interval = setInterval(function() {
        var el = document.getElementById(element);
        if(seconds == 0) {
            if(minutes == 0) {               
                minutes=7;
seconds=47;
                } else {
                    minutes--;
                    seconds = 60;
                }
            }
            if(minutes > 0) {
                var minute_text = minutes + (minutes > 1 ? ':' : ':');
            } else {
                var minute_text = '';
            }
            var second_text = seconds > 1 ?'':'';
            el.innerHTML = minute_text + ''+seconds + ' '+second_text + ' remaining';
            seconds--;
        }, 1000);

}
</script> 

var区间;
var分钟=12;
var秒=32;
window.onload=函数(){
倒计时(“倒计时”);
}
函数倒计时(元素){
间隔=设置间隔(函数(){
var el=document.getElementById(元素);
如果(秒==0){
如果(分钟==0){
分钟=7;
秒=47;
}否则{
分钟--;
秒=60;
}
}
如果(分钟>0){
var minute_text=minutes+(分钟数>1?':':':':');
}否则{
var minute_text='';
}
var second_text=seconds>1?“”:“”;
el.innerHTML=分钟文本+''+秒+''+秒文本+''剩余文本';
秒--;
}, 1000);
}
结果工作正常,但当计时器达到10以下的数字(12:03、12:05等)时,它会显示秒数,前面没有“0”。(12:3而不是12:03)


我试着修好这个,但毫无结果。是否可以通过某种方式编辑我的脚本来修复此错误?

数字前面没有零

你必须手动添加它

if(seconds < 10) {
    second_text = "0" + seconds;
}
if(秒<10){
秒\u text=“0”+秒;
}

尝试添加一个函数来填充显示的值

function padvalue(i) {
    if (i<10) {
        i="0" + String(i);
    }
    return i;
}

使用此代码段将数字转换为字符串:

var secondStr = seconds + "";
while (secondStr.length < 2) {
    secondStr = "0" + secondStr;
}
var secondStr=seconds+“”;
while(secondStr.length<2){
secondStr=“0”+secondStr;
}
在几分钟和几小时内执行相同的操作,然后打印字符串


(您知道,如果间隔时间为1000,则表示间隔时间为1000毫秒或更长?如果间隔时间如此长,则不太可能错过整个刻度。这意味着计数器将接近实时秒数,但不精确,并且会随时间和计算机的不同而变化。)

我刚刚清理了一下您的代码:

var interval,
    minutes = 12,
    seconds = 32;

window.onload = function() {
    countdown('countdown');
}

function countdown(element) {
    var el = document.getElementById(element),
        minutes_text, second_text;

    interval = setInterval(function() {
        if(seconds == 0) {
            if(minutes == 0) {
                minutes=7;
                seconds=47;
            }
            else {
                minutes--;
                seconds = 60;
            }
        }

        minutes_text = minutes;
        second_text = (seconds < 10 ? "0" : "") + seconds;

        el.innerHTML = minutes_text + ':' + second_text + ' remaining';
        seconds--;
    }, 1000);
}
var间隔,
分钟=12,
秒=32;
window.onload=函数(){
倒计时(“倒计时”);
}
函数倒计时(元素){
var el=document.getElementById(元素),
会议记录、第二次会议记录;
间隔=设置间隔(函数(){
如果(秒==0){
如果(分钟==0){
分钟=7;
秒=47;
}
否则{
分钟--;
秒=60;
}
}
分钟\文本=分钟;
秒文本=(秒<10?:“)+秒;
el.innerHTML=minutes_text+':'+second_text+'剩余';
秒--;
}, 1000);
}

我知道该行代码可能重复,但我不知道在哪里添加该行代码。我尝试在分钟和秒的组合行之间添加“0”,但它不起作用。你不应该这样使用parseInt。@Neal顺便说一句,你不需要在
second\u text
上调用parseInt,因为你已经可以访问
seconds
@sachleen lol。我觉得秒是一个总数。不是真实的数字。更新。@Neal s=seconds,我从我写的倒计时脚本中复制了它:)我理解,但OP可能不理解+1为最简单的答案。
var secondStr = seconds + "";
while (secondStr.length < 2) {
    secondStr = "0" + secondStr;
}
var interval,
    minutes = 12,
    seconds = 32;

window.onload = function() {
    countdown('countdown');
}

function countdown(element) {
    var el = document.getElementById(element),
        minutes_text, second_text;

    interval = setInterval(function() {
        if(seconds == 0) {
            if(minutes == 0) {
                minutes=7;
                seconds=47;
            }
            else {
                minutes--;
                seconds = 60;
            }
        }

        minutes_text = minutes;
        second_text = (seconds < 10 ? "0" : "") + seconds;

        el.innerHTML = minutes_text + ':' + second_text + ' remaining';
        seconds--;
    }, 1000);
}