首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP多次值的jQuery倒计时

PHP多次值的jQuery倒计时
EN

Stack Overflow用户
提问于 2015-08-05 01:15:09
回答 1查看 127关注 0票数 1

因此,我试图对数据库中的每个值进行倒计时。值以秒为单位,我想倒计时从(假设100)到,然后显示已完成的

然而,当我尝试这样做的时候,我的结果被弄得一团糟,并且没有每隔1秒计算一次。如果有3结果,则按3间期进行计数。我为我对这件事缺乏了解而提前道歉。

这是我的密码

代码语言:javascript
复制
<?php

    $curtime = date("Y-m-d h:i:s");
    $curtime = strtotime("$curtime UTC");
    if (logged_in() === true){

        $results = $dbc->query($sql);

        while ($attacks = mysqli_fetch_array($results)){
            $attime = $attacks['date'] - ($attacks['length'] + $curtime);

?>

<tr>
    <td class="text-left"><?php echo $attacks['attack_ip'];?></td>
    <td class="text-left"><?php echo $attacks['port'];?></td>
    <td class="text-left"><?php echo $attacks['method'];?></td>

    //////This is where the countdown is//////
    <td id="<?php echo $attacks['attack_id'];?>" class="text-left"><?php echo $attime;?></td>
    <td><button type="button" class="btn btn-effect-ripple btn-square btn-danger">Stop</button></td>
</tr>

<script type="text/javascript">

    var sec = <?php echo $attime;?>;
    var timer = setInterval(function() { 
       $('td#<?php echo $attacks['attack_id'];?>').text(sec--);
       if (sec == -1) {
          $('td#<?php echo $attacks['attack_id'];?>');
          clearInterval(timer);
       }
       if (sec == -1) {
          $('td#<?php echo $attacks['attack_id'];?>').html("<b>Finished</b>");
          clearInterval(timer);
       }
    }, 1000);

</script>


<?php 
        } //End WHILE

    }//END IF
?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-05 01:51:03

首先,我建议不要将php代码与javascript耦合。这使得阅读变得更加困难,维护起来也更加困难。

这一切都可以通过在公共元素上使用公共类来完成。至于间隔时间,我们可以使用data-属性直接将这些时间添加到元素中。

HTML

代码语言:javascript
复制
<td class="text-left my-timer" data-time="<?php echo $attime;?>"><?php echo $attime;?></td>

JS

代码语言:javascript
复制
$(function(){
    // loop over each element to activate
    $('td.my-timer').each(function(){
          // "this" inside "each" is current element
          var $elem = $(this), 
               // get the time value stored in data-time attribute
               sec = +$elem.data('time');
          // instance specific interval
          var timer = setInterval(function() {
             sec--;
             var html = sec >= 0 ? sec : "<b>Finished</b>";
             $elem.html(html);
             if( sec === 0){
                clearInterval(timer);
             }

          },1000);
    });

});

JS现在与服务器代码分离,可以放在同一个文件或外部js文件中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31821884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档