Javascript倒计时不为php循环工作
Javascript countdown not working for php loop
你好,我和一个朋友有一个黑帮游戏。我有一个倒计时计时器代码,但它只工作,当我使用一个计时器。但是我需要在循环中使用它来在表中获得更多的计时器。我在谷歌上搜索了一下,但没有任何帮助。我看到我必须使用不同的id,但这对我不起作用。我对javascript知之甚少。
这是我的代码:
While循环:
while($info = mysql_fetch_object($dbres))
{
$j = 0;
$bieding = mysql_fetch_object(mysql_query("SELECT `bedrag` FROM `biedingen` WHERE `veilingid`='{$info->id}' ORDER BY `bedrag` DESC LIMIT 1"));
$tijd = ($info->tijd + $info->duur * 60 * 60 - $time);
echo '<tr>
<td>'.veilingnaam($info->id,1,1).'</td>
<td>'.usernaam($info->veiler,1,1).'</td>
<td>€'.getal($bieding->bedrag).'</td>
<td><div id="teller'.$j.'"></div></td>
</tr>';
}
Javascript部分:<script type="text/javascript">
var seconds = <?= ($tijd+1) ?>;
var countdown = document.all? document.all["teller<?= $j?>"] : document.getElementById? document.getElementById("teller<?= $j?>") : "";
var woord = "seconden";
function display()
{
seconds=seconds-1;
if(seconds==1){ woord="seconde"; }
if(seconds==0){ woord="seconden"; }
if(seconds<0)
{
self.location.replace(self.location);
}
else
{
if (countdown)
{
countdown.innerHTML=seconds+" "+woord;
setTimeout('display()',1000);
}
}
}
display();
</script>
while循环遍历DB中的表行,但JavaScript代码不是该循环的一部分。这意味着您为每一行生成一个HTML表,但随后您创建<script>...</script>
,其中仅为最后一行包含$tijd
/$j
(假设您的while
在脚本添加到页面之前执行)。
可能的解决方法:
- 添加一个jQuery的选择器,比如
$("div.teller").each(function(){...});
,并在该函数中创建一个计时器和/或任何其他与div
相关的JavaScript代码。
注意,这需要你的div
获得一个CSS类"teller"。 - 在PHP的
while
循环中创建每个DB的表行所需的所有JavaScript代码,但这可能会变得非常混乱。
另外,我建议你看看JavaScript的setInterval()
,因为它比setTimeout()
更适合你想做的事情。
另一件要考虑的事情是:你所有的计时器都有一个1秒的刻度。在我看来,它是更好的有一个单一的计时器,只是保持秒数(无论可能是)在一个JavaScript数组(这是很容易在PHP的while
循环创建)。
编辑:这里有一种方法:
$data = array();
while($info = mysql_fetch_object($dbres))
{
... /* your current code */
$data[] = "{ id: 'teller$j', seconds: $tijd }";
}
$data = "[ ".implode(", ", $data)." ]";
现在,在循环的之外创建JavaScript代码:
<script type="text/javascript">
var data = <?php echo $data; ?>; // It is not advisable to use <?= ... ?>
// Get references to divs via saved ids (seconds are already saved
for (i = 0; i < data.length; i++)
data.div = document.getElementById(data.id); // No need for document.all; IE supports getElementById since version 5.5
...
</script>
现在,调整display()
以使用data
数组的元素。
相关文章:
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- AngularJS循环不工作
- For循环在Javascript函数中无法正常工作
- for循环在node.js中的工作方式
- 循环内部的递归函数未按预期工作
- mongoose.js Model.remove在循环中只能工作一次
- JavaScript while循环没有'不能在有条件的情况下工作
- 当if条件被添加到循环中时,Javascript函数将停止工作
- 让循环在我的脚本中工作
- 循环不'不能在“onreadystatechange”中工作
- 如何使此循环工作?它's返回未定义的语言js
- 为..在 Chrome 中循环工作,但不在 IE 中
- JQuery循环工作不正常
- 对象数组中的数据清理:无法进行循环工作
- Javascript倒计时不为php循环工作
- 渐明,淡出DIV上循环工作良好-但不显示第一个DIV
- 我的Javascript for循环工作在除了一个子数组以外的所有子数组上
- 为什么不't this For Canvas中的循环工作
- while循环工作时,页面没有响应
- Javascript循环:for循环工作,但不能映射