Safari日期时间问题

时间:2018-04-09 17:48:44

标签: javascript arrays clock

(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中显示,有没有人能看到为什么感谢欣赏它,

1 个答案:

答案 0 :(得分:0)

1-可能是因为您阅读该属性的方式,getAttribute只能在Safari 6或更高版本中使用:

enter image description here

退房:Element.getAttribute()

如果你使用旧版本的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);
});