-2

我的代码

$sql="SELECT * FROM `room_lists`";
$sqlquery = mysql_query($sql);
while($result = mysql_fetch_array($sqlquery)){

$toDay = strtotime($result['timeStop']); 
//echo $toDay;

?>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=tis620" />
<script type="text/javascript" src="core/jquery-latest.js"></script>
<title>test</title>
<script type="text/javascript">

function countDown(times){
    var toDay=Math.round(new Date().getTime()/1000); 
    var difTime=times-toDay;
    var day=0,hours=0,minutes=0,seconds=0;
    if(difTime>0){
    day=Math.floor(difTime/84600);
    hours=Math.floor((difTime/3600))%24;
    minutes=Math.floor(difTime/60)%60;
    seconds=Math.floor(difTime)%60; 
    countDown_onLoad();
    }
    else{
        alert('asd');   //time out
    }
    $('.show').html(day+' Day '+hours+' Hour '+minutes+' Min '+seconds+' Sec ');
}
function countDown_onLoad(){
    setTimeout("countDown(<?=$toDay ?>);",1000);
}
$(document).ready(function() {
countDown_onLoad();
});

</script>

</head>

<body>
<div class="show"></div>

</body>


</html>
<? } ?>

你好,我是一个使用javascript的新手。我已经创建了倒数计时器,以使用带有 js 函数的拍卖网站,该函数通过 php 查询从数据库(时间戳类型)调用,如果结果是 1 行,它工作正常,但如果超过 1 行,结果与最后一行相同数据库。我怎样才能解决这个问题?

这是我的输出

0 Day 1 Hour 41 Min 25 Sec
0 Day 1 Hour 41 Min 25 Sec
4

2 回答 2

0

您似乎正在为每个计数器输出整个 HTML 文档(减去开始<html>标记和)。<!doctype>

核心问题是您$(".show").html(...)用于输出计数器,这实际上是告诉它将该内容放入每个 .show元素中。最终结果是它们都显示相同的东西:无论最后一个计数器在哪里。

您的方法几乎无法挽救,但这是我最好的尝试:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=tis620" />  
    <script type="text/javascript" src="core/jquery-latest.js"></script>  
    <title>test</title>  
    <script type="text/javascript">
      function countDown(){  
          var toDay=Math.round(new Date().getTime()/1000);   
          $(".show").each(function() {
              var elm = $(this);
              var difTime=this.timestamp-toDay;  
              var day=0,hours=0,minutes=0,seconds=0;  
              if(difTime>0){  
                  day=Math.floor(difTime/84600);  
                  hours=Math.floor((difTime/3600))%24;  
                  minutes=Math.floor(difTime/60)%60;  
                  seconds=Math.floor(difTime)%60;   
              }  
              else{  
                  alert('asd');   //time out  
                  elm.removeClass("show");
              }  
              elm.html(day+' Day '+hours+' Hour '+minutes+' Min '+seconds+' Sec ');  
          });
      }  
      function countDown_onLoad(){  
          $(".show").each(function() {
              this.timestamp = parseInt(this.firstChild.nodeValue,10);
          });
          setInterval(countDown,1000);
      }  
      $(document).ready(function() {  
          countDown_onLoad();  
      });  
    </script>  
</head>  
<body>
    <?php
      $sql="SELECT * FROM `room_lists`";   
      $sqlquery = mysql_query($sql);   
      while($result = mysql_fetch_array($sqlquery)){   
          $toDay = strtotime($result['timeStop']);  
          echo "<div class=\"show\">".$toDay."</div>";
      }
    ?>
</body>
</html>

请注意,我不使用 jQuery。我只在这里使用它,因为您已经在使用它。考虑到这一点,我可能错误地使用了.each(). 如果您遇到任何错误,请告诉我,我会尝试修复它们。

于 2012-07-09T04:50:45.247 回答
0

如果要显示倒计时,则必须有一次,而不是多次,因此LIMIT 1在检索值时首先设置

而不是这样做

function countDown(times){
// blah blah blah
}
function countDown_onLoad(){
    setTimeout("countDown(<?=$toDay ?>);",1000);
}
$(document).ready(function() {
countDown_onLoad();
}); 

尝试以下方法

var countdown = function(myTime)
    { 
      // blah blah blah
    }
window.setInterval(countdown(<?=$toDay?>), 1000);
于 2012-07-09T04:55:55.393 回答