Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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 - Fatal编程技术网

如何让我的倒计时计时器在每次刷新JavaScript时停止重新开始

如何让我的倒计时计时器在每次刷新JavaScript时停止重新开始,javascript,Javascript,嗨,伙计们,谢谢你们抽出时间,对不起,我是新来的。 所以我的html工作中有一个JavaScript文件,它应该是一个倒计时(类似计时器)。 我希望它是(剩下的时间到6月3日),但我希望得到相同的结果或根本没有结果。每次我刷新浏览器时,计数器都会重新启动。我一直在YouTube上寻找视频,试图找到一种方法来改变这种情况,但结果只会变得更糟。我在这里也有其他问题,但答案总是不同的代码,我想知道我是否可以修改这一个这样做 请不要对我太苛刻我只有32分我不想失去投票权和否决权 ,这是代码,请提前感谢

嗨,伙计们,谢谢你们抽出时间,对不起,我是新来的。 所以我的html工作中有一个JavaScript文件,它应该是一个倒计时(类似计时器)。 我希望它是(剩下的时间到6月3日),但我希望得到相同的结果或根本没有结果。每次我刷新浏览器时,计数器都会重新启动。我一直在YouTube上寻找视频,试图找到一种方法来改变这种情况,但结果只会变得更糟。我在这里也有其他问题,但答案总是不同的代码,我想知道我是否可以修改这一个这样做 请不要对我太苛刻我只有32分我不想失去投票权和否决权 ,这是代码,请提前感谢

<html>
<body>
    <head>
    </head>
        <div id="countdown">
            <div id='tiles'></div>
                <div class="labels">
                    <li>Days</li>
                    <li>Hours</li>
                    <li>Mins</li>
                    <li>Secs</li>
                </div>
        </div>
    </div>

        <script>/*---------------Getcountdown------------------*/ 
        var target_date = new Date().getTime() + (1000*3600*772); // set the 
        countdown date
        var days, hours, minutes, seconds; // variables for time units

        var countdown = document.getElementById("tiles"); // get tag element

        getCountdown();

        setInterval(function () { getCountdown(); }, 1000);

        function getCountdown(){

            // find the amount of "seconds" between now and target
            var current_date = new Date().getTime();
            var seconds_left = (target_date - current_date) / 1000;

            days = pad( parseInt(seconds_left / 86400) );
            seconds_left = seconds_left % 86400;

            hours = pad( parseInt(seconds_left / 3600) );
            seconds_left = seconds_left % 3600;

            minutes = pad( parseInt(seconds_left / 60) );
            seconds = pad( parseInt( seconds_left % 60 ) );

            // format countdown string + set tag value
            countdown.innerHTML = "<span>" + days + "</span><span>" + hours 
       + "</span><span>" + minutes + "</span><span>" + seconds + "</span>"; 
        }

        function pad(n) {
            return (n < 10 ? '0' : '') + n;
        }
    </script>
    </body>
</html>

  • 日子
  • 小时数
  • 分钟
  • /*---------------Getcountdown-----------------*/ var target_date=new date().getTime()+(1000*3600*772);//设定 倒计时日期 变量天、小时、分钟、秒;//时间单位变量 var countdown=document.getElementById(“tiles”);//获取标记元素 getCountdown(); setInterval(函数(){getCountdown();},1000); 函数getCountdown(){ //找出从现在到目标之间的“秒数” var current_date=new date().getTime(); var秒数左=(目标日期-当前日期)/1000; 天数=pad(parseInt(剩余秒/86400)); 剩余秒数=剩余秒数%86400; 小时=pad(parseInt(剩余秒/3600)); 剩余秒数=剩余秒数%3600; 分钟=pad(parseInt(剩余秒/60)); 秒=pad(parseInt(秒左%60)); //格式化倒计时字符串+设置标记值 倒计时。innerHTML=“”+天+“”+小时 +“+分钟+”+秒+”; } 功能板(n){ 返回(n<10?'0':'')+n; }
    每当页面加载时,您倒计时的日期总是递增,因为它被初始化为当前时间加上偏移量:

    var target_date = new Date().getTime() + (1000*3600*772)
    
    使用绝对日期而不是相对时间:

    var target_date = new Date('June 3 2018');
    // or
    var target_date = new Date(2018, 6, 3);
    

    每当页面加载时,您倒计时的日期总是递增,因为它已初始化为当前时间加上偏移量:

    var target_date = new Date().getTime() + (1000*3600*772)
    
    使用绝对日期而不是相对时间:

    var target_date = new Date('June 3 2018');
    // or
    var target_date = new Date(2018, 6, 3);
    

    因为target_date变量是动态的,所以倒计时总是相同的

    第一行是:

    var target_date = new Date("01,06,2018").getTime();
    

    因为target_date变量是动态的,所以倒计时总是相同的

    第一行是:

    var target_date = new Date("01,06,2018").getTime();
    

    首先,请注意代码中有几个错误;此外,还可以做一些改进来改善这个问题:

    • HTML无效

    • 目标日期是用当前时间加上到未来的恒定偏移量初始化的——因此每次刷新时都会看到相同的计数器

    • 可以缩小几个变量的范围——这始终是一个好主意

    • 无需使用
      pad
      来显示代码的问题(始终尽量减少示例)

    • 一般来说,您应该避免使用
      innerHTML
      添加元素——如果您能够做到这一点,您将能够使用
      textContent
      编辑现有元素的内容

    • 计时器应至少低至最小时间增量的一半(在本例中为1秒)——否则您将错过更新(即,您将看到跳过一整秒的时间跳跃)

    您的代码段的简化、更正版本为:

    函数getCountdown(){ 目标日期=新日期(“2018年6月3日”); 让当前_日期=新日期(); 左秒=(目标日期-当前日期)/1000; 让天数=parseInt(还剩秒/86400); 剩余秒数=剩余秒数%86400; 设小时数=parseInt(剩余秒数/3600); 剩余秒数=剩余秒数%3600; 分钟=parseInt(剩余秒/60); let seconds=parseInt(剩余%60秒); document.getElementById(“tiles”).textContent= 天+天+ 小时数+小时数+ 分钟+“分钟和”+ 秒+秒; } setInterval(函数(){ getCountdown(); }, 500);
    首先,请注意您的代码中有几个错误;此外,还可以做一些改进来改善这个问题:

    • HTML无效

    • 目标日期是用当前时间加上到未来的恒定偏移量初始化的——因此每次刷新时都会看到相同的计数器

    • 可以缩小几个变量的范围——这始终是一个好主意

    • 无需使用
      pad
      来显示代码的问题(始终尽量减少示例)

    • 一般来说,您应该避免使用
      innerHTML
      添加元素——如果您能够做到这一点,您将能够使用
      textContent
      编辑现有元素的内容

    • 计时器应至少低至最小时间增量的一半(在本例中为1秒)——否则您将错过更新(即,您将看到跳过一整秒的时间跳跃)

    您的代码段的简化、更正版本为:

    函数getCountdown(){ 目标日期=新日期(“2018年6月3日”); 让当前_日期=新日期(); 左秒=(目标日期-当前日期)/1000; 让天数=parseInt(还剩秒/86400); 剩余秒数=剩余秒数%86400; 设小时数=parseInt(剩余秒数/3600); 秒