我完全迷失了这个javascript(查看源代码):http://www.fff2012.com
以及打开页面的以下php:
这是一个倒计时器,需要在每个页面加载后刷新。
<?php
function real_date_diff($date1, $date2 = NULL)
{
$diff = array();
if(!$date2) {
$cd = getdate();
$date2 = $cd['year'].'-'.$cd['mon'].'-'.$cd['mday'].' '.$cd['hours'].':'.$cd['minutes'].':'.$cd['seconds'];
}
$pattern = '/(\d+)-(\d+)-(\d+)(\s+(\d+):(\d+):(\d+))?/';
preg_match($pattern, $date1, $matches);
$d1 = array((int)$matches[1], (int)$matches[2], (int)$matches[3], (int)$matches[5], (int)$matches[6], (int)$matches[7]);
preg_match($pattern, $date2, $matches);
$d2 = array((int)$matches[1], (int)$matches[2], (int)$matches[3], (int)$matches[5], (int)$matches[6], (int)$matches[7]);
for($i=0; $i<count($d2); $i++) {
if($d2[$i]>$d1[$i]) break;
if($d2[$i]<$d1[$i]) {
$t = $d1;
$d1 = $d2;
$d2 = $t;
break;
}
}
$md1 = array(31, $d1[0]%4||(!($d1[0]%100)&&$d1[0]%400)?28:29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$md2 = array(31, $d2[0]%4||(!($d2[0]%100)&&$d2[0]%400)?28:29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$min_v = array(NULL, 1, 1, 0, 0, 0);
$max_v = array(NULL, 12, $d2[1]==1?$md2[11]:$md2[$d2[1]-2], 23, 59, 59);
for($i=5; $i>=0; $i--) {
if($d2[$i]<$min_v[$i]) {
$d2[$i-1]--;
$d2[$i]=$max_v[$i];
}
$diff[$i] = $d2[$i]-$d1[$i];
if($diff[$i]<0) {
$d2[$i-1]--;
$i==2 ? $diff[$i] += $md1[$d1[1]-1] : $diff[$i] += $max_v[$i]-$min_v[$i]+1;
}
}
return $diff;
}
?>
I'm not sure what to edit in order to make the countdown not refresh on each page load.
答案 0 :(得分:1)
每次加载页面时,倒计时插件的参数都是相同的(见下文 - 20天,10秒)。您必须计算事件之前的天/小时/分钟/秒,并将此计算结果作为参数传递,以正确初始化倒计时。看起来这个目前还没有动态生成 - 但我看不到源代码看不到PHP代码,所以我不能确定你目前正在尝试做什么。
(function($){
soundManager.setup({
url: 'js/swf/',
debugMode: false
});
$(window).load(function(){
$('#countdown').countdown({
timestamp : { 'days' : 20,
'hours' : 0,
'minutes' : 0,
'seconds' : 10 },
duration : 360,
soundURL : 'js/flip.mp3',
volume: 25,
callback : function(days, hours, minutes, seconds){
var message = "";
message += days + " day" + ( days==1 ? '':'s' ) + ", ";
message += hours + " hour" + ( hours==1 ? '':'s' ) + ", ";
message += minutes + " minute" + ( minutes==1 ? '':'s' ) + " and ";
message += seconds + " second" + ( seconds==1 ? '':'s' ) + " <br />";
$('.callback').html(message);
}
})
})
})(jQuery)
答案 1 :(得分:1)
首先,页面上的倒计时器是用java脚本而不是PHP(我编辑了你的问题,mods希望没问题)。
您的java脚本直接设置了倒计时的开始:
$('#countdown').countdown({
timestamp : { 'days' : 20,
'hours' : 0,
'minutes' : 0,
'seconds' : 10
...
..
.
您需要做的是将这些值与倒计时倒计时的日期进行比较!你可以这样做: