JavaScript工作在IE和Edge上,但不适用于Chrome和Firefox
问题描述:
这对IE和Edge很有效,但在Chrome和Firefox中显示NaN:NaN。请提供理由和正确的解决方案 我想显示只有一个小时的减少时间。JavaScript工作在IE和Edge上,但不适用于Chrome和Firefox
<!--HERE IS MY CODE-->
<!--THE CODE CREATIN ERROR-->
<html>
<head>
<script>
endtime="31/12/2015";
var myvar=setInterval(myfunc,1000);//function calling after every 1 second
var d=new Date();
d.setHours(14);
d.setMinutes(00);
k=00;
j=01;
function myfunc()
{strong text
d.setSeconds(k);
k++;
if(k==60)
{
d.setMinutes(j);
k=00;
j++;
}
var t = parseFloat(Date.parse(endtime) - Date.parse(d));
var seconds = Math.floor((t/1000) % 60);
var minutes = Math.floor((t/1000/60) % 60);
var hours = Math.floor((t/(1000*60*60)) % 24);
var days = Math.floor(t/(1000*60*60*24));
document.getElementById("div1").innerHTML=minutes.toString()+":"+seconds.toString();/*HERE IT IS SAYING NAN:NAN IN CHROME AND FIREFOX*/
}
</script>
</head>
<body>
<p id="demo"></p>
<div id="div1"></div>
</body>
</html>
答
试图从一种新的方法解决问题,做到了。
<html>
<head>
<script>
var t = parseFloat(3600000);
var myvar=setInterval(myfunc,1000);
function myfunc()
{
if(t>0)
{
var seconds = parseFloat(Math.floor((t/1000) % 60).toString());
var minutes = parseFloat(Math.floor((t/1000/60) % 60).toString());
var hours = Math.floor((t/(1000*60*60)) % 24);
var days = Math.floor(t/(1000*60*60*24));
document.getElementById("div1").innerHTML=minutes+":"+seconds;
t=t-1000;
};}
</script>
</head>
<body>
<p id="demo"></p>
<div id="div1"></div>
</body>
</html>
[**为什么我们会大喊大叫?**](https://meta.stackoverflow.com/questions/262688/preventing-all-caps-question-titles-and-bodies)说真的,你”如果你没有把每一个单词的大写**都发现问题更容易阅读。 –
包含“strong text”的行在JavaScript中无效。此外,'t'的值是NaN,因此具有此值的数学也将是NaN –
'Date.parse'仅保证解析代表RFC2822或ISO 8601日期的字符串 - 其他不同格式可能受不同浏览器支持,但没有保证。显然,IE/Edge支持'dd/mm/yyyy'(“2015年12月31日”) - 其他浏览器不支持 - [文档](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/parse)全部解释 –