Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
管理JavaScript中动态元素中的计时器_Javascript_Jquery_Html_Css - Fatal编程技术网

管理JavaScript中动态元素中的计时器

管理JavaScript中动态元素中的计时器,javascript,jquery,html,css,Javascript,Jquery,Html,Css,实际上,我正在通过AJAX从数据库中检索一些数据,在检索数据时,我使用JavaScript在HTML中创建了一些动态元素。我在容器中创建了动态行,在该行中创建了一个类为“col-md-4”的动态div,它是父行的子行,这意味着在一个动态行中至少可以有3个class=“col-md-4”的动态div。为此,在AJAX的obj.success函数中使用了一个循环。使用loop在动态行中生成3个动态元素的目的。如果不使用loop,那么新行将只有一个col-md-4类的div 现在的问题是,我从数据库中

实际上,我正在通过AJAX从数据库中检索一些数据,在检索数据时,我使用JavaScript在HTML中创建了一些动态元素。我在容器中创建了动态行,在该行中创建了一个类为“col-md-4”的动态div,它是父行的子行,这意味着在一个动态行中至少可以有3个class=“col-md-4”的动态div。为此,在AJAX的obj.success函数中使用了一个循环。使用loop在动态行中生成3个动态元素的目的。如果不使用loop,那么新行将只有一个col-md-4类的div

现在的问题是,我从数据库中检索一些时间,然后取当前时间,我得到两个tme的差异,然后使用一个函数来运行时间。所有这些都是循环。现在的问题是计时器只为行中的最后一个元素运行。 我在另一个场景中使用计时器,但是没有问题,因为在该场景中没有使用循环

var ajax=prompt('Confirm demo or paste ajax data','[{“id”:1},{“id”:2},{“id”:3},{“id”:4},{“id”:5}');
显示(ajax);
功能显示(响应){
var n=1;
风险值时间=[“2019-09-19 12:59”、“2019-09-27 12:59”、“2019-12-19 12:59”、“2019-11-19 12:59”、“2019-10-19 12:59”];
var time=new Date().toLocaleTimeString('en-GB');
var res=时间片(0,-3);
var today=新日期();
var dd=String(today.getDate()).padStart(2,'0');
var mm=String(today.getMonth()+1).padStart(2,'0');
var yyyy=today.getFullYear();
今天=yyyy+'-'+mm+'-'+dd;
var电流=今天+“”+res;
//警报(当前);
var data=JSON.parse(响应);
if(数据长度){

对于(var i=0;i您正在经历的行为是同步工作流问题中的一个经典异步函数。在您的setInterval回调中,您正在使用值lmn。当回调函数访问此变量时,代码流将在循环中循环,并且lmn将将留下最大循环索引值

因此,为了解决这个问题,您将异步函数封装在一个闭包函数调用中,并将该调用中使用的变量(设置在异步方法之外)作为参数发送回该闭包调用

为了更好地理解这是如何工作的,请在调试控制台中使用异步回调中lmn变量的位置放置一个检查点,无论是否使用闭包调用

要了解有关闭包的更多信息,请执行以下操作:

var ajax=prompt('Confirm demo or paste ajax data','[{“id”:1},{“id”:2},{“id”:3},{“id”:4},{“id”:5}');
显示(ajax);
功能显示(响应){
var n=1;
风险值时间=[“2019-09-19 12:59”、“2019-09-27 12:59”、“2019-12-19 12:59”、“2019-11-19 12:59”、“2019-10-19 12:59”];
var time=new Date().toLocaleTimeString('en-GB');
var res=时间片(0,-3);
var today=新日期();
var dd=String(today.getDate()).padStart(2,'0');
var mm=String(today.getMonth()+1).padStart(2,'0');
var yyyy=today.getFullYear();
今天=yyyy+'-'+mm+'-'+dd;
var电流=今天+“”+res;
//警报(当前);
var data=JSON.parse(响应);
if(数据长度){
对于(变量i=0;i
DIV.col-md-4{
显示:内联;
背景色:#FF0080;
保证金:5px;
}
.行{
显示:块;
背景色:#80E080;
填充:3倍;
}


还有一个问题,我告诉过我,我正在从数据库中检索值,但只有timer的值才是最后一个,我无法理解它@مہعممم㶋㶋,你能详细说明吗?我的意思是说,来自数据库的数据在数组的每个索引中都是数组。时间值不同,但代码只是选择了最后一个i的时间ndex并为所有元素显示相同的计时器
var distance=(新日期(数据[i+j].time)).getTime()-(新日期(当前)).getTime();
我在这里使用了这一行
data[i+j]。每次拾取上一个索引的值时,时间都会发生变化