Javascript Simple JS适用于除safari之外的所有浏览器
常见的头痛,但每个答案似乎都是独特的,我有一些简单的JS倒计时,直到12月15日,这个倒计时在每个浏览器上都有效,除了我在safari上的每一天、每小时、每分钟都会得到“NaN”Javascript Simple JS适用于除safari之外的所有浏览器,javascript,safari,Javascript,Safari,常见的头痛,但每个答案似乎都是独特的,我有一些简单的JS倒计时,直到12月15日,这个倒计时在每个浏览器上都有效,除了我在safari上的每一天、每小时、每分钟都会得到“NaN” <p id="clockdiv" class="decofont "> <span class="days"></span> <span class="hours"></span> <span class="minutes"></span&g
<p id="clockdiv" class="decofont ">
<span class="days"></span>
<span class="hours"></span>
<span class="minutes"></span></p>
<!--302 D | 21 H | 48 M december 15 2017 -->
var deadline = '12 15 2017';
function getTimeRemaining() {
var t = Date.parse('12 15 2017') - Date.parse(new Date());
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));
var time = {
'total': t,
'days': days,
'hours': hours,
'minutes': minutes,
'seconds': seconds
};
var output_time = document.getElementById('clockdiv');
output_time.innerHTML = days + ' D | ' + hours + ' H | ' + minutes + ' M';
setTimeout(getTimeRemaining, 60000);
}
getTimeRemaining(deadline);
var截止日期='12 15 2017';
函数getTimeRemaining(){
var t=Date.parse('12 15 2017')-Date.parse(new Date());
var秒=数学地板((t/1000)%60);
var分钟=数学地板((t/1000/60)%60);
可变小时数=数学楼层((t/(1000*60*60))%24);
风险天数=数学下限(t/(1000*60*60*24));
变量时间={
“总计”:t,
“天”:天,
“小时”:小时,
“分钟”:分钟,
“秒”:秒
};
var output_time=document.getElementById('clockdiv');
output_time.innerHTML=天+'D|'+小时+'H|'+分钟+'M';
setTimeout(getTimeRemaining,60000);
}
剩余时间(截止日期);
如果您有一个指向JS跨浏览器兼容性的链接(并非所有浏览器都能使用的常见功能),则可以获得额外的积分。是什么导致这种情况在safari上出现中断?最简单的替代方案是什么 问题的根源在于您正在解析一个字符串,并希望所有浏览器都对其进行相同的解析。日期字符串的解析几乎完全依赖于实现,ECMA-262只需要支持一种格式(ISO 8601扩展) 因此,在这一行中:
var t = Date.parse('12 15 2017') - Date.parse(new Date());
您应该使用日期构造函数。另外,您不应该使用Date.parse(new Date())
,只需使用new Date
或Date.now()
,因此:
var t = new Date(2017,11,15) - new Date();
这将返回两个日期之间的毫秒差:
console.log(新日期(2017,11,15)-新日期()代码>问题的根源在于您正在解析一个字符串,并且希望所有浏览器都对其进行相同的解析。日期字符串的解析几乎完全依赖于实现,ECMA-262只需要支持一种格式(ISO 8601扩展)
因此,在这一行中:
var t = Date.parse('12 15 2017') - Date.parse(new Date());
您应该使用日期构造函数。另外,您不应该使用Date.parse(new Date())
,只需使用new Date
或Date.now()
,因此:
var t = new Date(2017,11,15) - new Date();
这将返回两个日期之间的毫秒差:
console.log(新日期(2017,11,15)-新日期()如果非要我猜的话,我会说这是因为你的截止日期格式。我将它的格式设置为DD/MM/YY,而不是DD-MM-YY(带空格)。它可以是date.parse(),但问题再次出现,因此从那时起兼容性就可以得到修复。请看。如果我不得不猜测,我会说这是因为你的截止日期格式。我将它的格式设置为DD/MM/YY,而不是DD-MM-YY(带空格)。它可以是date.parse(),根据,但问题再次出现,因此从那时起兼容性可能已经得到修复。请参阅。