-1

我一直在尝试像永远一样在我的while循环中做javascript动画,但它只是我数组的最后一行受到动画的影响。我有很多行将出现在动画中,因此如果我这样做,在我的 while 循环之后保存所有变量将为我提供 20 000 行手动保存。

任何提示或其他东西都会很好地解决这个问题!谢谢

编辑-代码//非常简单的例子

<?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
}
?>

像这样的东西 :) 在这个例子中,它将以我的数组中的行数输出平方。所以基本上我希望所有的方块都是动画的。

4

1 回答 1

0

您的PHP while循环正在生成 a 的多个副本<div>,所有这些副本都具有相同的id id="square"ID是唯一的,因此多次使用相同的ID可能会导致意外行为,例如只能找到它引用的元素之一

与要多次使用的ID最相似的属性是属性。

此外,您正在生成一个<script>具有多次命名的函数。call每次<script>执行中的代码时,都会导致旧call 函数被新函数覆盖。这意味着只有最近的才会存在于内存中。

尝试将您的JavaScript与您的PHP分开,并避免多次使用相同的id 。这应该可以提高代码的有效性并解决您的问题。

最后一点,将String传递给setTimeout它会导致它的行为类似于eval,不鼓励这种行为。而是直接将您的函数传递给它。

于 2013-10-21T12:36:39.647 回答