如何在循环内调用javascript函数
如何像“onload”一样调用javascript函数 我是说。我试图调用CountDownTimer()函数,但我不知道怎么做。有人能帮我吗 另外,javascript函数运行良好 在我看来,我是这样尝试的:如何在循环内调用javascript函数,javascript,c#,asp.net,Javascript,C#,Asp.net,如何像“onload”一样调用javascript函数 我是说。我试图调用CountDownTimer()函数,但我不知道怎么做。有人能帮我吗 另外,javascript函数运行良好 在我看来,我是这样尝试的: @foreach (var item in Model.pedidosAberto) { <div class="col-lg-6 mb-4"> <a href="#" data-
@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>
}
@foreach(Model.peddosaberto中的变量项)
{
}
我也有同样的看法:
@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>
@节脚本{
$(文档).ready(函数(){
//倒计时(“2021年12月6日下午4:45”,“倒计时”);
功能倒计时(dt,id){
var结束=新日期(dt);
警报(结束);
var_秒=1000;
var _minute=_second*60;
变量(小时)=(分钟)*60 ;;
var _日=_小时*24;
无功定时器;
函数showLeving(){
var now=新日期();
var距离=结束-现在;
如果(距离<0){
清除间隔(计时器);
document.getElementById(id).innerHTML='EXPIRED!';
返回;
}
//var天数=数学楼层(距离/天数);
var小时=数学楼层((距离%\u天)/\u小时);
var分钟=数学楼层(距离%\u小时)/\u分钟);
var秒=数学楼层((距离%\u分钟)/\u秒);
//document.getElementById(id).innerHTML=days+'days';
document.getElementById(id).innerHTML=hours+':';
document.getElementById(id).innerHTML+=minutes+':';
document.getElementById(id).innerHTML+=秒;
}
定时器=设置间隔(显示剩余,1000);
}
});
您正在$(document.ready()中的匿名函数中定义函数倒计时(..)
调用。因此,CountDownTimer
函数只有在匿名函数执行期间才知道,并且当匿名函数结束时它就不存在了,这意味着
中的脚本在尝试时找不到它
修复这个,在代码< > $(文档).Read()/Cux>调用中使用<代码> > CONDUCTION <代码>,或者如果这就是其中的所有内容,则考虑只删除<代码> $(文档).Read()/Calp>Lo../P>
因此,与此相反:
<script type="text/javascript">
$(document).ready(function () {
//CountDownTimer('06/12/2021 4:45 PM', 'countdown');
function CountDownTimer(dt, id) {
// ...
}
});
</script>
$(文档).ready(函数(){
//倒计时(“2021年12月6日下午4:45”,“倒计时”);
功能倒计时(dt,id){
// ...
}
});
…这样做:
<script type="text/javascript">
function CountDownTimer(dt, id) {
// ...
}
$(document).ready(function () {
//CountDownTimer('06/12/2021 4:45 PM', 'countdown');
});
</script>
功能倒计时(dt,id){
// ...
}
$(文档).ready(函数(){
//倒计时(“2021年12月6日下午4:45”,“倒计时”);
});
您可以从现有脚本中获取倒计时元素,无需在html标记中嵌入大量脚本
首先向倒计时元素添加一个类
<div id="countdown_@item.IdPedido" class="countdown"></div>
CountDownTimer
不是全局公开的,因为它是在传递给ready()
的函数中定义的。请删除$(document).ready(function(){/code>和});
。请注意,您的倒计时可能无法正常工作,因为a)传递给的日期格式是新日期(字符串)
不是规范中定义的格式之一,因此取决于浏览器和b)具有id的元素可能还不存在(尽管它应该存在,因为您一秒钟都没有调用showraining
)。更好的方法是向所有倒计时元素添加一个类“countdown”。从函数中获取所有倒计时元素,然后调用函数。至于要传递给函数的数据,可以将其粘贴到倒计时元素的某些属性中。$('.countdown')。每个(函数(){..获取$的数据(此)单击此处并调用函数。});
<div id="countdown_@item.IdPedido" class="countdown" data-date="06/12/2021 4:45 PM"></div>
$(document).ready(function () {
$('.countdown').each(function() {
var dateString = $(this).attr('data-date');
var thisId = $(this).attr('id');
CountDownTimer(dateString, thisId);
}
// existing code....
}