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