Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带js和php的步行(tic-toc)时钟_Javascript_Php_Jquery_Time_Clock - Fatal编程技术网

Javascript 带js和php的步行(tic-toc)时钟

Javascript 带js和php的步行(tic-toc)时钟,javascript,php,jquery,time,clock,Javascript,Php,Jquery,Time,Clock,在javascript和php上有一个带有“walkin”时钟的脚本(我需要服务器端的时间——这很重要),但它是停止的,在刷新页面之前不计算。我做错了什么,请帮忙。多谢各位 <?php $Hour = date("H"); $Minute = date("i"); $Second = date("s"); $Day = date("d"); $Month = date("m"); ?> <script type="text/javascript"> function c

在javascript和php上有一个带有“walkin”时钟的脚本(我需要服务器端的时间——这很重要),但它是停止的,在刷新页面之前不计算。我做错了什么,请帮忙。多谢各位

<?php $Hour = date("H");
$Minute = date("i");
$Second = date("s");
$Day = date("d");
$Month = date("m"); ?>

<script type="text/javascript">
function clock() {
var d = new Date();
var month_num = d.getMonth();
var day = d.getDate();
var hours = <?php echo $Hour;?>;
var minutes = <?php echo $Minute;?>;
var seconds = <?php echo $Second?>;

month=new Array("января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря");

if (day <= 9) day = "0" + day;
if (hours <= 9) hours = "0" + hours;
if (minutes <= 9) minutes = "0" + minutes;
if (seconds <= 9) seconds = "0" + seconds;

date_time = "Today - " + day + " " + month[month_num] + " " + d.getFullYear() + " y. &nbsp;&nbsp;&nbsp;Now - "+ hours + ":" + minutes + ":" + seconds;

if (document.layers) {
 document.layers.doc_time.document.write(date_time);
 document.layers.doc_time.document.close();
} else document.getElementById("doc_time").innerHTML = date_time;
 setTimeout("clock()", 1000);}
</script>

<span id="doc_time">Date & time</span>

<script type="text/javascript">clock();</script>

功能时钟(){
var d=新日期();
var month_num=d.getMonth();
var day=d.getDate();
var小时=;
var分钟=;
var秒=;
月份=新阵列(“ааааа”、“ааа”、“ааа”、“ааа”、“ааа”、“аааа”、“ааааа”、“ааа;

如果(dayphp代码在页面加载时运行一次,那么在每次调用clock()函数时,小时、分钟和秒将始终保持不变


如果您真的需要这样做,您必须使用AJAX每秒请求一个php脚本以从服务器获取当前时间,但请记住,如果多个用户同时打开页面,这些请求将有延迟,并且还会给服务器带来巨大的负载。

您的问题:

  • PHP在页面请求中提供相应的日期值
  • 将这些值存储到JS中
  • 您可以再次循环相同的值。因此,循环可以工作,但值不变
而不是您应该做的:

  • 创建一个
    var D=新日期(“”;

    在您的职能范围之外
  • 在每次超时时,在初始PHP日期上加上一秒钟
    DATE=PHP:initial+JS:now-JS:initial
函数零(n){返回n>9?n:“0”+n;}
风险值月份=[
"января", "февраля", "марта", "апреля", "мая", "июня",
"июля", "августа", "сентября", "октября", "ноября", "декабря",
];
var jsDate=new Date();//存储JS时间
//出于演示目的,我将硬编码一个日期字符串:
var phpDate=新日期(“2018年9月9日星期日23:59:55+0000”);
//您可以改为使用此选项:
//var phpDate=新日期(“”);
功能时钟(){
var diff=+new Date()-+jsDate;//获取秒差
var date=新日期(+phpDate+diff);//将差异添加到初始PHP时间
var y=date.getFullYear(),
M=date.getMonth(),
d=零(date.getDate()),
h=零(date.getHours()),
m=零(date.getMinutes()),
s=零(date.getSeconds());
document.getElementById(“doc_time”).innerHTML=`
Бааa:${d}${months[M]}${y}。&emsp;
аБМа:${h}:${m}:${s}
`;
设置超时(时钟,1000);
}
时钟();

什么是
document.layers
?它是某个元素ID?另外,如果您已经在PHP中定义了它,为什么要使用
var d=new Date();var month_num=d.getMonth();
。为什么要将JS和PHP@RokoC.Buljan...是的,存在ID元素。我看到了一个错误。不要使用
窗口以DOM元素(ID)为目标。层
一旦有人或您自己引入全局
var layers=“foo”
您将失去对元素的控制。使用
document.getElementById(“层”)
取而代之;或者是速度明显较慢的
document.querySelector(“层”)
抱歉,页面重新加载不是我的方式……但感谢您花时间@jbцццццСццццццццццццццццццццццnd使用
setSeconds
在一段时间后,时钟将失去准确性,因为不能保证1000的超时正好是1秒。