问题是因为
return
语句位于
setInterval()
因此不会从
$.fn.countdown
调用。
相反,您需要使用
this
关键字,然后更新该元素。在下面的示例中,我使用
text()
方法
$.fn.countdown = function(toTime) {
let $el = $(this);
let timeUpdate = () => {
var now = new Date().getTime();
var distance = toTime - now;
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
var value = days + "d " + hours + "h " + minutes + "m " + seconds + "s ";
$el.text(value);
}
timeUpdate(); // run on instantiation
var intervalId = setInterval(timeUpdate, 1000); // run every second
};
$('#my_div').countdown(new Date("Jan 5, 2024 15:37:25").getTime());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="my_div"></div>