2

我有一个 unix 时间,例如: var later= 135000;

当我稍后取变量时 -= 1000 我能够得到 134000。

但是当我稍后取变量 += 1000 时,我得到 1350001000。

我怎样才能增加我的unix时间?

<script type="text/javascript"> 
   var later = "<?php echo $unix_time; ?>";
   var stop= setInterval('countdown()',1000);

   function countdown(plus_ten) {
        var now = new Date();

        var now_time= now.getTime()/1000;
        now_time= Math.floor(now_time);

        if(plus_ten){
            later = later + 1000;
            alert(later);
        }

        var sec = later- now_time;
        if(sec<=0){
            clearInterval(stop);
            alert('hello');
        }

        sec= Math.floor(sec);
        var min = Math.floor(sec / 60);
        var hour = Math.floor(min / 60);

        hour %= 24;
        min %= 60;
        sec %= 60;

        document.getElementById("hoursBox").innerHTML = hour;
        document.getElementById("minsBox").innerHTML = min;
        document.getElementById("secsBox").innerHTML = sec;       
    }
</script>
4

2 回答 2

3

请记住,JavaScript 是一种松散类型的语言。您的变量是作为整数还是字符串处理取决于您使用它的上下文。

-减)运算符显然是算术的,所以 JS 知道减法。但是+操作符也是用来连接字符串的,所以如果你想让JS做加法,你可能需要更明确一些。您已将 的内容later放在双引号内,这向 JS 暗示您希望将其视为字符串。所以:

var later = parseInt("<?php echo $unix_time; ?>");

或者

later = later - 0 + 1000;  /* hints at arithmetic, then adds 1000 */

行情是一件好事,以防万一$unix_time包含意想不到的东西。

于 2012-05-26T12:22:53.193 回答
2

当您执行以下操作时,您的变量“稍后”会被分配一个字符串值:

var later = "<?php echo $unix_time; ?>";

你应该这样做:

var later = <?php echo $unix_time; ?>; // i.e. no quotes around the time stamp

那应该解决它。

于 2012-05-26T12:20:41.773 回答