我是JS的新手,我正在调试一段我没写过的代码。 我正在开展一个项目,我们需要处理一些基于交易的优惠。 DOM中的每个交易元素都有个人到期时间,我们使用倒计时器跟踪。 以下是包含计时器的html页面(Django模板):
<div class="countdown">
<span class="countdown-time" data-remaining="{{ running_time }}"></span>
{% if deal.is_normal %}
<i class='fa fa-gavel'></i>
{% elif deal.is_group%}
<i class='fa fa-users'></i>
{% elif deal.is_booking %}
<i class='fa fa-pencil-square-o'></i>
{% endif %}
</div>
<script type="text/javascript">
function displayRange(seconds) {
if (seconds <= 0) {
return 'expired';
}
var count = seconds;
hours = Math.floor(count/(60 * 60));
count = count - hours * (60 * 60);
minutes = Math.floor(count/60);
seconds = count - minutes * 60;
return sprintf("%02d", hours) + ':' + sprintf("%02d", minutes) + ":" + sprintf("%02d", seconds);
}
$('.countdown-time').each(function(index, el) {
var that = $(this);
var _el = el;
var intervalID = setInterval(function() {
var remaining = parseInt(_el.getAttribute('data-remaining'));
var delta = Math.floor(new Date().getTime()/1000) + remaining;
console.log(' delta ' + delta +' remaining= ' + remaining + ' that=' + that + ' _el ' + _el + ' index ' + index);
that.html(displayRange(remaining));
_el.setAttribute('data-remaining', remaining - 1);
if(remaining < 0) {
clearInterval(intervalID);
}
}, 1000);
});
</script>
setInterval 函数应该每秒调用一次
$('.countdown-time').each(function(index, el) {
每个DOM元素的类别为&#34;倒数时间&#34; 。 我期望倒数计时器每秒步进一步,并在相应的交易元素布局中显示结果。
对于 index 的每个元素,会发生的是 setinterval()并行触发
total_number_of_deal_elements_in_the_DOM - index
每秒次。因此,例如,如果我总共有5个交易元素( total_number_of_deal_elements_in_the_DOM = 5),则具有 index = 1 的交易元素的倒数计时器每个步骤踩4秒> setinterval 循环,因为setInterval(function(....),1000)每秒并行调用4次。 index = 2元素计时器的步长为3秒,依此类推。
错误在哪里?