【发布时间】:2021-05-12 21:23:54
【问题描述】:
如何调用像“onload”这样的javascript函数?
我的意思是。我正在尝试调用 CountDownTimer() 函数,但我不知道该怎么做。有人可以帮我吗?
附言。 javascript函数工作正常。
在我看来,我正在尝试这种方式:
@foreach (var item in Model.pedidosAberto)
{
<div class="col-lg-6 mb-4">
<a href="#" data-toggle="modal" data-id="@item.IdPedido" data-partial="_AbertoPartial"
data-modal="#Modal" class="card bg-success text-white text-decoration-none">
<div class="card-body">
<div class="float-right">
<div id="countdown_@item.IdPedido"></div>
<script type="text/javascript">
CountDownTimer('06/12/2021 4:45 PM', 'countdown_@item.IdPedido');
</script>
</div>
</div>
</a>
</div>
}
在同一个视图中,我有这个:
@section scripts{
<script type="text/javascript">
$(document).ready(function () {
//CountDownTimer('06/12/2021 4:45 PM', 'countdown');
function CountDownTimer(dt, id) {
var end = new Date(dt);
alert(end);
var _second = 1000;
var _minute = _second * 60;
var _hour = _minute * 60;
var _day = _hour * 24;
var timer;
function showRemaining() {
var now = new Date();
var distance = end - now;
if (distance < 0) {
clearInterval(timer);
document.getElementById(id).innerHTML = 'EXPIRED!';
return;
}
//var days = Math.floor(distance / _day);
var hours = Math.floor((distance % _day) / _hour);
var minutes = Math.floor((distance % _hour) / _minute);
var seconds = Math.floor((distance % _minute) / _second);
//document.getElementById(id).innerHTML = days + 'days ';
document.getElementById(id).innerHTML = hours + ':';
document.getElementById(id).innerHTML += minutes + ':';
document.getElementById(id).innerHTML += seconds;
}
timer = setInterval(showRemaining, 1000);
}
});
</script>
【问题讨论】:
-
CountDownTimer不会全局公开,因为它是在传递给ready()的函数中定义的。删除$(document).ready(function () {和});。请注意,您的倒计时可能无法如您所愿,因为 a) 您传递给new Date(string)的日期格式不是规范中定义的格式之一,因此取决于浏览器和 b)具有 id 的元素可能还不存在(尽管它应该存在,因为您一秒钟都不会调用showRemaining)。 -
更好的方法是为所有倒计时元素添加一个“倒计时”类。从您的函数中,获取所有倒计时元素,然后调用该函数。至于要传递给函数的数据,您可以将其粘贴在倒计时元素的某些属性中。 $('.countdown').each(function(){ ..在这里获取$(this)的数据并调用函数。});
标签: javascript c# asp.net