Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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和PHP时间计时器_Javascript_Php_Html_Time_Ticker - Fatal编程技术网

Javascript和PHP时间计时器

Javascript和PHP时间计时器,javascript,php,html,time,ticker,Javascript,Php,Html,Time,Ticker,以下JavaScript在Firefox中不起作用,我能得到的唯一调试错误是“[06:29:53.518]SyntaxError:09不是合法的ECMA-262八进制常量”,它与var month='.date('m',$time')有关;线路 这段代码在IE浏览器和Chrome浏览器中运行得很好,但只有在Firefox中不起作用,尽管它使用了警告框来突出显示它通常会停在的一行代码,但却没有给出问题的提示 var hours = '.date('G', $time).';

以下JavaScript在Firefox中不起作用,我能得到的唯一调试错误是“[06:29:53.518]SyntaxError:09不是合法的ECMA-262八进制常量”,它与var month='.date('m',$time')有关;线路

这段代码在IE浏览器和Chrome浏览器中运行得很好,但只有在Firefox中不起作用,尽管它使用了警告框来突出显示它通常会停在的一行代码,但却没有给出问题的提示

        var hours = '.date('G', $time).';
        var minutes = '.date('i', $time).';
        var seconds = '.date('s', $time).';
        var day = '.date('d', $time).';
        var month = '.date('m', $time).';
        var year = '.date('o', $time).';

        function getDayCount(monthIndex, yearIndex)
        {
            switch ( monthIndex )
            {
            case 0: return 31;
            case 1: return isLeapYear(yearIndex) ? 29 : 28;
            case 2: return 31;
            case 3: return 30;
            case 4: return 31;
            case 5: return 30;
            case 6: return 31;
            case 7: return 31;
            case 8: return 30;
            case 9: return 31;
            case 10: return 30;
            case 11: return 31;
            }
            return 31;
        }

        function isLeapYear(yearIndex)
        {
            return new Date(yearIndex, 2-1, 29).getDate() == 29;
        }

        function getDayName(year, month, day, hours, minutes, seconds)
        {
            var d = new Date(year, month, day, hours, minutes, seconds, 0);
            var weekday= new Array(7);
            weekday[0] = "Sunday";
            weekday[1] = "Monday";
            weekday[2] = "Tuesday";
            weekday[3] = "Wednesday";
            weekday[4] = "Thursday";
            weekday[5] = "Friday";
            weekday[6] = "Saturday";
            return weekday[d.getDay()];
        }

        function updateClock()
        {
            window.seconds++;

            if ( window.seconds == 60 ) {
                window.minutes++;
                window.seconds = 0;
            }

            if ( window.minutes == 60 ) {
                window.hours++;
                window.minutes = 0;
            }

            if ( window.hours == 24 ) {
                window.day++;
                window.hours = 0;
            }

            if ( (window.day - 1) == getDayCount(window.month - 1, window.year) ) {
                window.month++;
                window.day = 1;
            }

            if ( window.month == 12 ) {
                window.year++;
                window.month = 1;
            }

            var hourString = window.hours.toString();
            var minuteString = window.minutes.toString();
            var secondsString = window.seconds.toString();
            var dayString = window.day.toString();
            var monthString = window.month.toString();
            var yearString = window.year.toString();

            if ( minuteString.length < 2 )
                minuteString = "0".concat(minuteString);
            if ( hourString.length < 2 )
                hourString = "0".concat(hourString);
            if ( secondsString.length < 2 )
                secondsString = "0".concat(secondsString);
            if ( dayString.length < 2 )
                dayString = "0".concat(dayString);
            if ( monthString.length < 2 )
                monthString = "0".concat(monthString);

            document.getElementById("hour").innerText = hourString;
            document.getElementById("minute").innerText = minuteString;
            document.getElementById("second").innerText = secondsString;
            document.getElementById("day").innerText = dayString;
            document.getElementById("month").innerText = monthString;
            document.getElementById("year").innerText = yearString;
            document.getElementById("dayName").innerText = getDayName(year, month - 1, day, hours, minutes, seconds);
        }

        function init()
        {
            window.setInterval(function(){updateClock()}, 1000);
        }
var hours='.date('G',$time.);
var minutes='.date('i',$time.);
var seconds='.date('s',$time.);
变量日='.date('d',$time.);
变量月份='.date('m',$time.);
变量年份='.date('o',$time.);
函数getDayCount(monthIndex,yearIndex)
{
开关(monthIndex)
{
案例0:返回31;
案例1:返回年份(年指数)?29:28;
案例2:返回31;
案例3:返回30;
案例4:返回31;
案例5:返回30;
案例6:返回31;
案例7:返回31;
案例8:返回30;
案例9:返回31;
案例10:返回30;
案例11:返回31;
}
返回31;
}
函数isLeapYear(yearIndex)
{
返回新日期(yearIndex,2-1,29);
}
函数getDayName(年、月、日、小时、分钟、秒)
{
var d=新日期(年、月、日、时、分、秒、0);
var weekday=新数组(7);
工作日[0]=“周日”;
工作日[1]=“周一”;
工作日[2]=“星期二”;
工作日[3]=“星期三”;
工作日[4]=“周四”;
工作日[5]=“周五”;
工作日[6]=“周六”;
返回工作日[d.getDay()];
}
函数updatelock()
{
window.seconds++;
如果(window.seconds==60){
window.minutes++;
window.seconds=0;
}
如果(window.minutes==60){
window.hours++;
window.minutes=0;
}
如果(window.hours==24){
window.day++;
window.hours=0;
}
if((window.day-1)=getDayCount(window.month-1,window.year)){
window.month++;
window.day=1;
}
如果(window.month==12){
window.year++;
window.month=1;
}
var hourString=window.hours.toString();
var minuteString=window.minutes.toString();
var secondssString=window.seconds.toString();
var dayString=window.day.toString();
var monthString=window.month.toString();
var yearString=window.year.toString();
if(minuteString.length<2)
minuteString=“0”。concat(minuteString);
如果(小时字符串长度<2)
hourString=“0”。concat(hourString);
如果(第二串长度<2)
secondsString=“0”。concat(secondsString);
if(dayString.length<2)
dayString=“0”。concat(dayString);
如果(月字符串长度<2)
monthString=“0”。concat(monthString);
document.getElementById(“hour”).innerText=hourString;
document.getElementById(“分钟”).innerText=minuteString;
document.getElementById(“second”).innerText=secondsString;
document.getElementById(“day”).innerText=dayString;
document.getElementById(“月”).innerText=monthString;
document.getElementById(“年”).innerText=yearString;
document.getElementById(“dayName”).innerText=getDayName(年、月-1、天、小时、分钟、秒);
}
函数init()
{
setInterval(函数(){updatelock()},1000);
}
有关的HTML:

<h2>Live Chat - <span id="hour"></span>:<span id="minute"></span>:<span id="second"></span> <span id="dayName"></span> <span id="day"></span>/<span id="month"></span>/<span id="year"></span></h2>
实时聊天-:://
正文初始化:

<body onload="javascript:init();">

date('m',$time)
在php中返回字符串“09”。当您在javascript中插入它而不加引号时,会得到类似于
var month=09
。Javascript将前缀为0的数字视为八进制数字,并且由于八进制数字只在数字0到7之后,因此没有八进制数字9。您可以在php()中使用
intval()
将字符串转换为整数:
intval(日期('m',$time),10)插入javascript之前


编辑:一种更合理的方法可能是对不包含前缀0(
date('n',$time);
)的月份使用该选项,或者在其周围添加引号使其成为字符串。一个月中的某一天(
j
而不是
d
),小时、分钟和秒也是如此。请参阅。

解决方案是使用textContent而不是innerText,因为firefox不支持innerText


是的,你说得很对,但是使用intval(对于每个日期函数,并不是唯一的问题。HTML不会像IE中那样随时间更新。或者,使用
date('n',$time)
输出不带前导零的月份。还应针对天、小时、分钟和秒值执行此操作,以防止在值恰好小于10时将这些值错误地解读为八进制数。现在将小时、分钟和秒也添加到答案中@scotsninjaAlso第五次更正了答案I don’我还没睡着。嗨,请注意,我说过我在每个日期函数中都添加了intval,但在firefox中仍然无法运行。setInterval(function(){updatelock()},1000);
可以简化为
window.setInterval(updatelock,1000);
,因为它需要函数引用,并且您没有执行多个函数。
if(document.all) {
    document.getElementById("hour").innerText = hourString;
    document.getElementById("minute").innerText = minuteString;
    document.getElementById("second").innerText = secondsString;
    document.getElementById("day").innerText = dayString;
    document.getElementById("month").innerText = monthString;
    document.getElementById("year").innerText = yearString;
    document.getElementById("dayName").innerText = getDayName(year, month - 1, day, hours, minutes, seconds);
}
else {
    document.getElementById("hour").textContent = hourString;
    document.getElementById("minute").textContent = minuteString;
    document.getElementById("second").textContent = secondsString;
    document.getElementById("day").textContent = dayString;
    document.getElementById("month").textContent = monthString;
    document.getElementById("year").textContent = yearString;
    document.getElementById("dayName").textContent = getDayName(year, month - 1, day, hours, minutes, seconds);
}