Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.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_Time_Clock - Fatal编程技术网

使用javascript创建基本时钟时出现问题

使用javascript创建基本时钟时出现问题,javascript,jquery,time,clock,Javascript,Jquery,Time,Clock,我试图用javascript构建一个简单的时钟,但我不明白为什么它不工作 $(document).ready(function() { function updateTime() { var now = newDate(); var hours = now.getHours(); var minutes = now.getMinutes(); var seconds = now.getSeconds();

我试图用javascript构建一个简单的时钟,但我不明白为什么它不工作

$(document).ready(function() {
    function updateTime() {
        var now = newDate();
        var hours = now.getHours();
        var minutes = now.getMinutes();
        var seconds = now.getSeconds();

        var currenTime = hours + ':' + minutes ':' + seconds;

        var counter = document.getElementById('counter');
        counter.innerHTML = currentTime;
    }
    updateTime();
});
  • 您错过了
    new
    Date()
    之间的空白。在此之前,您真的应该看看devtools

  • 您的函数在DOM就绪时执行,并且已经完成。你想要的是每秒钟更新一次。您需要一个
    setInterval
    ,或递归
    setTimeout


  • 首先,您需要修复代码中的错误:

  • 新建
    日期
    新建日期
    )之间的空格
  • 键入
    var currentTime
    ->
    var currentTime
  • var currentTime
  • 稍后,如果您想制作实时时钟,则需要使用
    setInterval
    每秒调用
    updateTime

    setInterval(updateTime, 1000);
    
    像这样

    当然,在html中定义

    $(文档).ready(函数(){
    函数updateTime(){
    var now=新日期();
    var hours=now.getHours();
    var minutes=now.getMinutes();
    var seconds=now.getSeconds();
    var currentTime=小时+':'+分钟+':'+秒;
    var counter=document.getElementById('counter');
    counter.innerHTML=当前时间;
    }
    updateTime();
    setInterval(更新时间,1000);
    });
    
    
    
    功能倒计时(id、计时器){
    计时器--;
    daysRemain=数学楼层(计时器/86400);
    金额=计时器%86400;
    hrsRemain=数学下限(金额/3600);
    金额=计时器%3600;
    最小剩余=数学下限(金额/60);
    金额=计时器%60;
    secsRemain=数学下限(金额);
    //如果长度小于2个字符,则用前导0填充字符串
    如果(secsRemain.length<2){
    secsRemain='0'+secsRemain;
    }
    //剩余时间的字符串格式
    时钟=daysRemain+”:“+hrsRemain+”:“+minsRemain+”:“+secsRemain;
    document.getElementById(id).innerHTML=clock;
    如果(计时器>0){
    //还有时间,请在1秒后再次调用此函数
    设置超时(“倒计时”(“+id+”,“+timer+”),1000);
    }否则{
    //时间到了!把倒计时藏起来
    document.getElementById(id).innerHTML='Time Expired';
    }
    }
    
    这是使用javascript创建计时器时钟的另一种方法

  • newDate()//错误
    应为新日期()

  • counter.innerHTML=CurrentTime
    应该是
    counter.innerHTML=currentTime

  • 使用
    setInterval


  • 什么是
    newDate
    函数?是不是应该是
    新日期()
    ?如果应该的话,为什么您没有检查控制台来修复这个简单的印刷错误?请解释问题是什么-例如错误消息。您在
    domready
    调用了一次,但您希望它会随着时间的推移而更新?在修复
    新日期()
    之后,您需要一个
    时间间隔
    是的,很抱歉,我更改了新日期(),我需要设置一个更新时间间隔,但问题是我根本没有时间显示。我有id为“counter”的div。我还看到我拼写了var currentTime而不是currentTime,但即使修复了它也没有显示出来。。可怜,什么树
    setInterval
    将每隔一秒钟运行一次此方法。请提出一个更好的解决方案,每个方法调用运行另一个setInterval只需将
    setInterval
    更改为
    setTimeout
    或将
    setInterval
    移到
    updateTime
    之外即可,很抱歉;)谢谢
         function countdown(id, timer){
    
        timer--;
    
        daysRemain = Math.floor(timer / 86400);
    
        amount = timer%86400;
        hrsRemain  = Math.floor(amount / 3600);
    
         amount = timer%3600;
        minsRemain = Math.floor(amount/60);
    
         amount = timer%60;
        secsRemain =Math.floor(amount);
    
        // Pad the string with leading 0 if less than 2 chars long
        if (secsRemain.length < 2) {
            secsRemain = '0' + secsRemain;
        }
    
        // String format the remaining time
        clock      = daysRemain + ":" + hrsRemain + ":" + minsRemain + ":" + secsRemain;
    
        document.getElementById(id).innerHTML = clock;
        if ( timer > 0 ) {
    
            // Time still remains, call this function again in 1 sec
            setTimeout("countdown('" + id + "'," + timer + ")", 1000);
    
    
        } else {
            // Time is out! Hide the countdown
            document.getElementById(id).innerHTML = 'Time Expired';
    
        }
        }
    
    $(document).ready(function() {
         var counter = document.getElementById('counter');
    
    
    window.setInterval(function() {
        console.log(1);
        var now = new Date();
        var hours = now.getHours();
        var minutes = now.getMinutes();
        var seconds = now.getSeconds();
    
        var currentTime = hours + ':' + minutes +':' + seconds;
    
    
        counter.innerHTML = currentTime;
    }
    
    
        ,'1000');
    
    });