【问题标题】:PHP javascript function...simpler way?PHP javascript函数...更简单的方法?
【发布时间】:2014-04-04 06:54:41
【问题描述】:

我使用的 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'
        });";

【问题讨论】:

  • 不需要php,js有日期函数
  • @Dagon 嗯,需要 一些 PHP 来将变量 $date(可能已经在别处计算)传输到适当的 JS 值。
  • 使用date 函数六次,然后炮制结果是不必要的,只需一个date 函数调用:date("Y, n, y, g, i, s", $date)

标签: javascript php


【解决方案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'
    });
});

【讨论】:

  • 这样你可以包含一个外部的 JS 文件,而不必担心让你的 web 服务器使用 PHP 解释器解析 .js 文件。
【解决方案2】:

除了将$date 值传递给您的HTML 页面外,您不需要任何PHP 代码。考虑传递一个时间戳值。

HTML/(PHP >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,可以将尖括号中的内容替换为&lt;?php echo (new DateTime($date))-&gt;getTimestamp() * 1000; ?&gt;

【讨论】:

  • 当你可以做time()*1000时为什么要(new DateTime($date))-&gt;getTimestamp() * 1000
  • OP 没有询问当前时间。这可能是通过表单或查询字符串传入的值。
  • strtotime($date) 然后 ;)
  • 不管怎样,我认为这将是最准确的,并且如果操作正确,则与时区相关。
猜你喜欢
  • 2011-06-14
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
相关资源
最近更新 更多