1

我仍然是 Javascript 的新手。我试着写了一个程序让图像一直fadeToggle,所以我使用了while条件语句(结合一个常量变量);在运行它并冻结我的计算机(然后记住病毒基本上是无限操作)之后,我在这里搜索了一下,意识到我可能确实应该永远不要使用无限循环。

(实际上我想要微光——意思是从不透明度 0.9 到 0.6 再到 0.9 等等......)所以它与 fadeToggle 不同,但同样的问题仍然存在;如何让它无限运行?(不编写恶意代码。)

这是我写的,供大家参考:

<script>
$(document).ready(function(){
var always10 = 10;
while (always10 == 10) {
    $('.pimg').fadeToggle(2600);
                   }
});
</script>

另外,我在另一个while(true)更适合无限循环的线程上发现了。所以另一个问题:无限循环有时可以吗?

4

2 回答 2

0

只需使用 jQuery 动画已经提供的回调,例如.fadeToggle

function fadeToggleForever ($e) {
    $e.fadeToggle({
        duration: 2600,
        // start another fadeToggle when this one completes
        complete: function () { fadeToggleForever($e) }
    });
}

// main code
fadeToggleForever($('.pimg'));

使用完整回调的方法是有效的,因为 jQuery 动画在内部使用setTimeout(或可能setInterval)并因此“屈服”代码执行,以便浏览器可以继续对用户输入做出反应并更新显示。

于 2013-10-25T20:10:38.290 回答
0

由于 Javascript 是异步的,因此没有sleep方法。但是,一个好主意是使用setIntervalor setTimeout

如果没有这些功能,您的循环将尽可能多地占用资源,并且可能导致冻结(取决于您的浏览器)。

于 2013-10-25T20:11:09.347 回答