(function() {
var days, hours, minutes, seconds;
setInterval(function() {
var live_date = $('.livedate');
var current_date = new Date().getTime();
for (var i = 0; i < live_date.length; i++) {
var date = live_date[i].getAttribute('data-countdown');
var seconds_left = (new Date(date).getTime() - current_date) / 1000;
days = parseInt(seconds_left / 86400);
if (seconds_left <= 0) {
}
else {
days = parseInt(seconds_left / 86400);
seconds_left = seconds_left % 86400;
hours = parseInt(seconds_left / 3600);
seconds_left = seconds_left % 3600;
minutes = parseInt(seconds_left / 60);
seconds = parseInt(seconds_left % 60);
$('.livedate').html(days + "D" + " " + hours + "H" + " " + minutes);
}
}
}, 1000);
})();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="livedate" data-countdown='11/23/2018 23:59:00'> </div>
我在这里遇到日期对象的问题由于某种原因,时钟没有在safari中显示,有没有人能看到为什么感谢欣赏它,
答案 0 :(得分:0)
1-可能是因为您阅读该属性的方式,getAttribute
只能在Safari 6或更高版本中使用:
如果你使用旧版本的Safari,你只需使用jQuery's .attr()
功能更改此行:
var date = live_date[i].getAttribute('data-countdown');
到
var date = $(live_date[i]).attr('data-countdown');
或者如果您只有一个类名为.livedate
的元素:
var date = live_date.attr('data-countdown');
2- 另一个可能的问题 可能只是在HTML 5中您可以使用前缀为data-
的自定义属性,因此请确保您实际使用的是HTML 5
3- 另一个可能的问题 可能是日期字符串的格式,因此要确保您可以使用UTC格式并更改此行:
<div class="livedate" data-countdown='11/23/2018 23:59:00'> </div>
为:
<div class="livedate" data-countdown='2018-11-23T23:59:00'></div>
注意:在您的代码中,有一些可以进行改进的空间,例如,您建议在页面中可能包含多个.livedate
元素的for循环点,所以如果在这种情况下,最好只更改相关.livedate
的内部测试:
var el = $(live_date[i]);
var date = el.attr('data-countdown');
//the rest of your code
el.html(days + "D" + " " + hours + "H" + " " + minutes);
另一个改进是使用jQuery's .each()
进行循环:
var live_date = $('.livedate');
var current_date = new Date().getTime();
live_date.each(function(index, element){
var el = $(element);
var date = el.attr('data-countdown');
//the rest of your code
el.html(days + "D" + " " + hours + "H" + " " + minutes);
});