Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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 计时器倒计时只运行一次,不跟随while循环?_Javascript_Php - Fatal编程技术网

Javascript 计时器倒计时只运行一次,不跟随while循环?

Javascript 计时器倒计时只运行一次,不跟随while循环?,javascript,php,Javascript,Php,每次循环运行时,创建另一个表行并显示相关数据,我想在每行的列中显示倒计时计时器(以显示时间流逝)。下面的脚本只运行一次。你有没有其他的想法来做这件事或者用它做些什么??我在php while循环中编写了以下代码,但只运行了一次。请帮忙 <script> counter=0; </script> <?php $count=0; while($rowp = $resultp->fetch_assoc()) { echo <td><p id='d

每次循环运行时,创建另一个表行并显示相关数据,我想在每行的列中显示倒计时计时器(以显示时间流逝)。下面的脚本只运行一次。你有没有其他的想法来做这件事或者用它做些什么??我在php while循环中编写了以下代码,但只运行了一次。请帮忙

<script> 
counter=0;
</script>
<?php
$count=0;
while($rowp = $resultp->fetch_assoc()) {
echo <td><p id='demo",$count,"'></p></td>
?>
<script>
var countDownDate = new Date("<?php echo $enterytime1; ?>").getTime();

// Update the count down every 1 second
var x = setInterval(function() {

    // Get todays date and time
    var now = new Date().getTime();

    // Find the distance between now an the count down date
    var distance = now - countDownDate;

    // Time calculations for days, hours, minutes and seconds
    var days = Math.floor(distance / (1000 * 60 * 60 * 24));
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);

    // Output the result in an element with id="demo"
    document.getElementById("demo" + counter).innerHTML = hours + "h " + minutes + "m " + seconds + "s ";

    // If the count down is over, write some text 
    if (distance < 0) {
        clearInterval(x);
        document.getElementById("demo").innerHTML = "EXPIRED";
    }
}, 1000);
</script>
<?php }
?>

计数器=0;
var countDownDate=新日期(“”.getTime();
//每1秒更新一次倒计时
var x=setInterval(函数(){
//获取今天的日期和时间
var now=new Date().getTime();
//找出现在和倒计时日期之间的距离
var距离=现在-倒计时日期;
//天、小时、分钟和秒的时间计算
变量天数=数学楼层(距离/(1000*60*60*24));
可变小时数=数学楼层((距离%(1000*60*60*24))/(1000*60*60));
var分钟=数学楼层((距离%(1000*60*60))/(1000*60));
var秒=数学楼层((距离%(1000*60))/1000);
//在id=“demo”的元素中输出结果
document.getElementById(“demo”+计数器).innerHTML=hours+“h”+minutes+“m”+seconds+“s”;
//如果倒计时结束,写一些文字
如果(距离<0){
净间隔(x);
document.getElementById(“demo”).innerHTML=“过期”;
}
}, 1000);

是的,您必须为所有列创建新的倒计时

如果您的条件为
true
-countDownDate>现在,它将终止间隔。

我猜它将直接进入过期状态,对吗?你点错菜了。应该是另一种方式:


var距离=倒计时日期-现在

我将
php
代码替换为日期,并更改了
距离计算。试试这个,如果有任何变化,请告诉我

var countDownDate=新日期(2017,2,10,12,9,40,0).getTime();
计数器=0;
//每1秒更新一次倒计时
var x=setInterval(函数(){
//获取今天的日期和时间
var now=new Date().getTime();
//找出现在和倒计时日期之间的距离
var距离=倒计时日期-现在;
//如果倒计时结束,写一些文字
如果(距离<0){
净间隔(x);
document.getElementById(“demo”).innerHTML=“过期”;
}
//天、小时、分钟和秒的时间计算
变量天数=数学楼层(距离/(1000*60*60*24));
可变小时数=数学楼层((距离%(1000*60*60*24))/(1000*60*60));
var分钟=数学楼层((距离%(1000*60*60))/(1000*60));
var秒=数学楼层((距离%(1000*60))/1000);
计数器++;
//在id=“demo”的元素中输出结果
var newDiv=document.createElement(“div”);
newDiv.setAttribute(“id”、“demo”+计数器);
var node=document.createTextNode(天+天+小时+小时+分钟+米+秒+秒);
newDiv.appendChild(节点);
if(document.getElementById(“demo”+计数器)!=null){
document.getElementById(“demo”+计数器).innerHTML=days+“days”+hours+“h”+minutes+“m”+seconds+“s”;
}否则{
文件.body.appendChild(newDiv);
}
如果(计数器>10)
计数器=0;
}, 1000);
div{
边框:1px黑色实心;
}

php veriable$enterytime1每次循环运行时都会更改其值。我在循环启动之前使用等于0的计数器变量,但仍然为零(您是否在while循环中打印整个脚本?是的,我正在打印,但在while循环之前定义counter=0。但是如果计数器是javascript变量,您如何使用php循环递增它?确实如此,但脚本只运行一次:(不,一切正常,只希望脚本在每次whileloop运行时都运行while loop在哪里运行?不,它不运行。顺序没问题,问题是脚本只运行一次,如果我使用您的代码在此小提琴中输入未来日期,它将直接过期:。但是,如果您交换值,它会工作:如果您100%确定这不是问题,那么另一件可能发生的事情是,你正在关闭JS运行的窗口。我看不出你是如何迭代count变量的。它似乎总是0。另外,你真的可以在代码中看到计时器吗?你怎么知道是否运行过一次?我使用counter是因为我在循环的每一行上都倒计时。正如我提到的e的时间每一行都在更改。实际上,当循环从mysql查询获取数据时,它取决于查询。我已经更新了代码。你能告诉我这是你想要的吗?如果不是,请准确地向我解释你的要求。谢谢你的努力,但这不是我想要的。请检查这个