我一直在尝试在我的while循环中做javascript动画,就像永远一样,但它只是受到动画影响的数组的最后一行。我有很多行将在动画中,所以在我的while循环之后保存所有变量将给我200万行手动保存,如果我这样做。
如果能尽可能好地解决这个问题,任何提示或事情都会很棒! 感谢
编辑代码//非常简单的例子
<?php
while($rows = mysql_fetch_array($data)){
$data = $rows['data'];
?>
<div id="square" style="height:50px; width:50px; background:yellow;" </div>
<script>
var data = '<?php echo $data; ?>';
setTimeout("call()",100);
function call() {
if(data == "hello"){ //bad example
$('#square').animate({ left: (600), top: (200) }, 2000);
}
else if(data == "bye"){
$('#square').animate({ left: (100), top: (100) }, 2000);
}
//etc...
}
</script>
<?php
}
?>
像这样的东西:)
在这个例子中,它将以我的数组中的行数输出square。所以基本上我希望所有方块都是动画的。
答案 0 :(得分:0)
您的 PHP while
循环正在生成<div>
的多个副本,所有副本都具有相同的 id id="square"
。 ID 应该是唯一的,因此多次使用相同的 ID 可能会导致意外行为,例如只能查找其中一个元素。< / p>
与 ID 最相似的属性是多次使用 class 属性。
此外,您多次生成一个名为<script>
的函数的call
。每次执行<script>
中的代码时,都会导致旧的call
函数被新的覆盖。这意味着只有最新的内存才会存在。
尝试将 JavaScript 与 PHP 分开,然后多次使用相同的 id 。这应该可以提高代码的有效性并解决您的问题。
最后一点,将 String 传递给setTimeout
会导致其行为类似于eval
,不鼓励这种行为。直接将您的功能传递给它。