Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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 Java脚本代码在Internet Explorer中不工作,而在Google Chrome中工作得非常好_Javascript_Html_Javascript Objects - Fatal编程技术网

Javascript Java脚本代码在Internet Explorer中不工作,而在Google Chrome中工作得非常好

Javascript Java脚本代码在Internet Explorer中不工作,而在Google Chrome中工作得非常好,javascript,html,javascript-objects,Javascript,Html,Javascript Objects,这段代码在GoogleChrome中运行得非常好,而在InternetExplorer中不起作用 它是用JavaScript编写并与HTML一起使用的计时器代码 如果有人可以帮助,chrome和InternetExplorer的控制台截图也附在附件中。它们没有显示错误 函数makeTimer(){ //var endTime=新日期(“2018年4月29日9:56:00 GMT+01:00”); var endTime=新日期(“2020年5月19日17:30:00 GMT+05:00”);

这段代码在GoogleChrome中运行得非常好,而在InternetExplorer中不起作用

它是用JavaScript编写并与HTML一起使用的计时器代码

如果有人可以帮助,chrome和InternetExplorer的控制台截图也附在附件中。它们没有显示错误

函数makeTimer(){
//var endTime=新日期(“2018年4月29日9:56:00 GMT+01:00”);
var endTime=新日期(“2020年5月19日17:30:00 GMT+05:00”);
endTime=(Date.parse(endTime)/1000);
var now=新日期();
now=(Date.parse(now)/1000);
var timeLeft=endTime-now;
变量天数=数学下限(timeLeft/86400);
var小时=数学楼层((时间间隔-(天*86400))/3600);
var分钟=数学楼层((时间间隔-(天*86400)-(小时*3600))/60);
var秒=数学地板((时间间隔-(天*86400)-(小时*3600)-(分钟*60));
如果(小时数<“10”){
小时数=“0”+小时数;
}
如果(分钟<“10”){
分钟=“0”+分钟;
}
如果(秒<“10”){
秒=“0”+秒;
}
$(“#天”).html(天+天);
$(“#小时”).html(小时+“小时”);
$(“#分钟”).html(分钟+“分钟”);
$(“#秒”).html(秒+秒);
}
setInterval(函数(){
makeTimer();
}, 1000);

在IE中无效,应为:

19 May 2020 17:30:00 GMT+0500
我想Chrome在日期对象方面有更好的解析器,并且可以容忍不同的格式 问题在于
Date.parse
。从ES6开始,它的解析行为是标准化的,因此大多数现代浏览器都非常统一地支持它

然而,正如所指出的,直到ES5,解析行为都依赖于实现,并且在浏览器之间有很大的不同

由于没有任何版本的Internet Explorer完全支持ES6,问题在于IE的解析器无法解析日期,因此返回
NaN

无需使用
Date.parse
当您试图解析
日期
对象时,您可以简单地将它们转换为数字,具有相同的效果

由于除法(
/
)会自动将其操作数强制转换为数字,因此可以省略日期。完全解析:

函数makeTimer(){
//var endTime=新日期(“2018年4月29日9:56:00 GMT+01:00”);
var endTime=新日期(“2020年5月19日17:30:00 GMT+05:00”);
endTime=(endTime/1000);
var now=新日期();
现在=(现在/1000);
var timeLeft=endTime-now;
变量天数=数学下限(timeLeft/86400);
var小时=数学楼层((时间间隔-(天*86400))/3600);
var分钟=数学楼层((时间间隔-(天*86400)-(小时*3600))/60);
var秒=数学地板((时间间隔-(天*86400)-(小时*3600)-(分钟*60));
如果(小时数<“10”){
小时数=“0”+小时数;
}
如果(分钟<“10”){
分钟=“0”+分钟;
}
如果(秒<“10”){
秒=“0”+秒;
}
$(“#天”).html(天+天);
$(“#小时”).html(小时+“小时”);
$(“#分钟”).html(分钟+“分钟”);
$(“#秒”).html(秒+秒);
}
setInterval(函数(){
makeTimer();
}, 1000);


显示运行中的浏览器的屏幕截图而不抛出错误是没有意义的。。。显示IE中控制台的输出…两个屏幕截图现在都已附加。您已经看过这里了吗?错误是明确的,它表示您忘记关闭某个位置(或其他位置)的标记。我认为这与你的JS代码没有任何关系。Chrome原谅了一些像这样的小错误,IE没有。是的,我设法关闭了所有标签,现在屏幕截图更新了。但错误仍然相同您仍然在解析构造函数中的日期,所以我不会说您的ommiting date解析完全正确。
19 May 2020 17:30:00 GMT+0500