Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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 jQuery定时器的实现_Javascript_Jquery_Timer - Fatal编程技术网

Javascript jQuery定时器的实现

Javascript jQuery定时器的实现,javascript,jquery,timer,Javascript,Jquery,Timer,我从数据库中获取一个注释列表,并将它们显示到视图中,如果注释的时间少于15分钟,那么我将显示一个编辑按钮,允许用户内联编辑注释并保存新信息。我让这部分充分发挥作用。我现在正在尝试将计时器连接到不到15分钟的便笺上,并在计时器启动时隐藏按钮。注意:用户可以编辑多个笔记,只要它们expiration)){$('#编辑注释').remove();}});如果($('.note.editable').length)setTimeout(checkTimer,5000);}();//这将每5秒检查一次},

我从数据库中获取一个注释列表,并将它们显示到视图中,如果注释的时间少于15分钟,那么我将显示一个编辑按钮,允许用户内联编辑注释并保存新信息。我让这部分充分发挥作用。我现在正在尝试将计时器连接到不到15分钟的便笺上,并在计时器启动时隐藏按钮。注意:用户可以编辑多个笔记,只要它们<15分钟。 由于我对jQuery和Javascript不太熟悉,我该怎么做呢?
谢谢你的回复,因为我对这个论坛很陌生,我不确定你是否需要代码来回答这个问题。因此,如果有人想看它,我会把它挂起来。

我会在注释中添加一个.editable类,该类仍然是可编辑的,当不再需要时将其删除。 您可以在data time=“1359999066”属性中保留注释的时间(假设它是unix时间戳)。如果您需要我暗示的代码的进一步帮助,请告诉我

(function checkTimer() {
    $('.note.editable').each(function() {
        //check for timestamp, remove .editable and hide button
    });
    if ( $('.note.editable').length ) setTimeout(checkTimer, 5000);
})();
// this will check every 5 seconds
用法


这可能会解决您的问题。请参阅服务器端链接上的完整文章和演示。您可以为包含创建时间的每个便笺附加一个数据属性:

<div class="note" data-creation="1360000265027">
   <!-- milliseconds from 01.01.1970 (UTC) -->
   <p>My content</p>
   <button>edit</button>
</div>

我的内容

编辑
现在您可以检查这是否超过15分钟:

(function checkTimer() {
     $('.note').each(function(){
         var creation = $(this).data('creation'),
              // time in milliseconds from 01.01.1970 (UTC) minus 15min (900000milsec)
              fifteenAgo = (new Date).getTime() - 9e5;
         if (creation <= fifteenAgo) {
              $(this).find('button').remove();
         }
    });
    if ( $('.note button').length ) setTimeout(checkTimer, 5000);
})();
(函数checkTimer(){
$('.note')。每个(函数(){
var creation=$(this).data('creation'),
//1970年1月1日(UTC)减去15分钟(900000毫秒)后的时间(毫秒)
fifteenAgo=(新日期).getTime()-9e5;

如果(创建时间应该是if子句中的创建,当然你是对的……所有的YYMMDDhhmm内容都非常复杂。是的,我们需要一个包装器每x秒检查一次!但也许安妮斯利·卡特尔找到了自己的答案……无论如何,别忘了在时间上进行服务器端验证。到目前为止,我们的帖子在这方面做得很好问题,多亏了你的帮助,我才能够将过期日期传递到js。抱歉,发布得太早了。到目前为止,你的帖子解决这个问题的效果非常好,多亏了你的帮助,我才能够将过期日期传递到js。我正在使用strotime()进行设置在php中,并通过数据过期传递它。我能够删除隐藏它的按钮的id。我现在遇到的问题是,如果有多个注释,它似乎不起作用。我正在使用的代码片段如下。HTML-
{if$note.editable==1}Edit{/if}
js用于删除按钮-
window.setInterval(函数(){(函数checkTimer(){$('#编辑注释')).each(函数(){var expiration=$('#编辑注释').data('expiration');now=new Date();if((now.getTime()/1000>expiration)){$('#编辑注释').remove();}});如果($('.note.editable').length)setTimeout(checkTimer,5000);}();//这将每5秒检查一次},5000);
不使用id,使用类,多个元素不能具有相同的id值
(function checkTimer() {
     $('.note').each(function(){
         var creation = $(this).data('creation'),
              // time in milliseconds from 01.01.1970 (UTC) minus 15min (900000milsec)
              fifteenAgo = (new Date).getTime() - 9e5;
         if (creation <= fifteenAgo) {
              $(this).find('button').remove();
         }
    });
    if ( $('.note button').length ) setTimeout(checkTimer, 5000);
})();