PHP javascript函数...更简单的方法?

时间:2014-04-03 22:16:16

标签: javascript php

我使用的javascript倒计时代码要求我使用以下格式:"年,月 - 1,日,小时,分钟,秒"。我有以下代码,它有效,但我想知道是否有更简单的方法可以让它工作(一个线路较少,一个可能更快?)

$year = date('Y',$date);
$month = date('n',$date);
$day = date('j',$date);
$hour = date('g',$date);
$minute = date('i',$date);
$second = date('s',$date);
$js .= "var newYear = new Date();
        newYear = new Date(".$year.", ".$month." - 1, ".$day.", ".$hour.", ".$minute.", ".$second.");
        $('#timer').countdown({
            until: newYear,
            layout: '{hn} h {mn} m {sn} s'
        });";

2 个答案:

答案 0 :(得分:1)

你应该避免通过PHP生成Javascript。您的Javascript代码不应更改为每个用户或每页呈现,您应该只是从静态文件中包含它。任何数据应该通过Ajax访问或通过DOM节点本地存储在该页面中:

<input type="hidden" id="someAppData" value="1242525242"/>
$(function () {
    // Grab the data from the DOM node
    var newYear = $('#someAppData').val();

    $('#timer').countdown({
        until: newYear,
        layout: '{hn} h {mn} m {sn} s'
    });
});

答案 1 :(得分:0)

除了将$date值传递到HTML页面之外,您不需要任何PHP代码。考虑通过时间戳值。

HTML /(PHP&gt; 5.2.0)代码:

<script>
    var newYear = new Date(<?= (new DateTime($date))->getTimestamp() * 1000 ?>);
    $('#timer').countdown({
        until: newYear,
        layout: '{hn} h {mn} m {sn} s'
    });";
</script>

基本上,您将时间戳从PHP(以秒为单位)传递到Javascript(以毫秒为单位)到各自的Date对象中。如果您没有short tags enabled,则可以使用<?php echo (new DateTime($date))->getTimestamp() * 1000; ?>

替换尖括号中的内容