设置设置间隔函数正在运行并导致浏览器崩溃
Setting setInterval function is running and crashing the browser.
我有一个几乎可以工作的函数。
它查找类为 .hex 的元素,然后运行一个介于 5 和 13 之间的随机数,然后将这些 .hex 项附加到文档正文中。
然后我有一个延迟,六边形慢慢淡入和淡出。
我想做的是在循环中创建它,以便它们不断淡入淡出。
我已经注释掉了代码,这应该按照我的理解工作,但目前没有。
我所做的只是将所有代码包装在一个名为 initHex() 的新函数中,然后在代码之后,我使用 setInterval 每 12 秒(目前)运行一次函数。
我可以在控制台中看到函数运行,然后开始非常快速地循环,数字急剧增加,并且很快它停止浏览器响应。
我想知道该函数是否包裹了太多代码。
这个想法是,希望当前函数仍在运行(淡出六边形),因为新的函数正在淡入。
我假设在函数结束时,我还需要一些东西来删除现有的十六进制元素,这样它们就不会继续添加到文档中。我确实试过这个。
这是函数:
//function initHex() {
$rndNum = Math.floor(Math.random() * 8) + 5;
var e = $('.hex');
for (var i = 0; i < $rndNum ; i++) {
$docHeight = $(window).height();
$docHeight = Math.random() * $docHeight * 2;
$docWidth = $(window).width();
$docWidth = Math.random() * $docWidth;
$rndOpacity = Math.random();
$rndSpeed = Math.floor(Math.random() * 2000) + 2000;
e.each(function(){
$(this).css({
position: 'absolute',
top: $docHeight,
left: $docWidth - 195,
opacity: $rndOpacity
});
e.clone().prependTo('body').delay(e.length*800).fadeIn($rndSpeed).delay(1000).fadeOut($rndSpeed*2);
console.log($rndNum, $rndOpacity, $rndSpeed);
});
}
//}
//setInterval(initHex, 12000);
在运行六边形后删除它们方面,我尝试过:
e.clone().prependTo('body').delay(e.length*800).fadeIn($rndSpeed).delay(1000).fadeOut($rndSpeed*2.5, function(){
e.remove();
});
这是小提琴:http://jsfiddle.net/lharby/j5bSz/尽情分叉。
蒂亚
我已经重新设计了你的代码。你犯了一些错误,是的,你每次都尝试用类 hex
克隆整堆元素,但数组没有方法克隆。
试试这个:
function initHex() {
var $rndNum = Math.floor(Math.random() * 8) + 5;
for (var i = 0; i < $rndNum ; i++) {
var $docHeight = $(window).height()
, $top = Math.random() * $docHeight * 2
, $docWidth = $(window).width()
, $left = Math.random() * $docWidth - 195
, $rndOpacity = Math.random()
, $rndSpeed = Math.floor(Math.random() * 2000) + 2000;
$('<div></div>').addClass('hex').css({
position: 'absolute',
top: $top,
left: $left,
opacity: $rndOpacity
}).prependTo('body').delay(1000).fadeIn($rndSpeed).delay(1000).fadeOut($rndSpeed*2, function(){
this.remove();
});
}
}
setInterval(initHex, 12000);
还有一件事,这段代码仍然没有优化,但我试图尽可能多地保存你的代码,让你更清楚。
http://jsfiddle.net/andbas/DZSJT/1/
相关文章:
- 如何设置浏览器视口大小
- 如何设置浏览器打开的文件对话框的文件名(一些默认值)
- 如何在javascript中设置浏览器关闭时的会话超时
- 如何设置浏览器选项卡's锚定目标名称
- 用javascript设置浏览器窗口的默认时区
- 在Protractor测试中设置浏览器时区
- 如何使用 grunt 设置浏览器内测试
- 如何在全屏设置浏览器时创建弹出窗口
- 通过视口或 javascript 设置浏览器缩放
- Chrome扩展:通过编程设置浏览器操作图标,使图标像素化
- 如何使用angularjs中的自定义指令,使用Unform jQuery插件设置浏览器默认复选框的样式
- 使用jQuery设置浏览器特定的CSS属性
- 设置浏览器窗口最小化的最小大小限制
- 设置浏览器的视口大小
- 如何设置浏览器创建的桌面通知的关闭超时时间?
- 如何设置浏览器标题从弹出窗口的标题
- 如何使用Javascript / jquery设置浏览器的时区
- 如何设置浏览器为history.pushState显示的条目的标题
- 正在设置浏览器宽度的cookie
- 获取响应未设置浏览器 Cookie