【发布时间】:2021-01-07 15:05:11
【问题描述】:
我的网页中有一个计时器,其 JavaScript 代码如下:
function setTimeCounters() {
$(".time-counter").each(function (index, elem) {
let exp = new Date($(this).attr('data-time'));
var x = setInterval(function() {
let now = (new Date()).getTime();
let ex = (new Date(exp)).getTime();
let distance = ex - now;
let days = Math.floor(distance / (1000 * 60 * 60 * 24));
let hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
let minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
let seconds = Math.floor((distance % (1000 * 60)) / 1000);
$(elem).find(".time").html(`${showNumber(days)}:${showNumber(hours)}:${showNumber(minutes)}:${showNumber(seconds)}`);
if ((hours+minutes+seconds) <= 0) {
clearInterval(x);
$(elem).html("timeout!");
}
}, 1000);
});
}
function showNumber (num) {return ("0" + num).slice(-2);}
setTimeCounters();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="time-counter"
data-time="2020-09-25 05:20:06">
<span class="time"></span>
<span><i class="fa fa-clock"></i></span>
</div>
我的问题是 iphone ios 上的 safari 浏览器和 mac os(在 chrome 中工作正常,...)显示时间如下: aN:aN:aN:aN:aN
【问题讨论】:
-
什么是
showNumber函数?根据aN:aN:aN:aN:aN的结果,好像还有一些NaNs在路上.. -
我编辑了您的 sn-p 以使其可运行,但它仍然需要您实现
showNumber。我现在添加了一个占位符。 @KBASE,请编辑。 -
@Wyck 对此感到抱歉,已编辑
-
我加了时间,现在运行它,它会工作,iphone safari 有问题
-
该日期格式是否合法/受支持? (我不这么认为)请参阅stackoverflow.com/a/4310986/1563833 我认为您需要使用 parseExact 才能使用该格式。
标签: javascript jquery safari counter