【发布时间】:2012-04-10 13:50:27
【问题描述】:
我有以下 jQuery 代码:
var id_atual
var temp_id
var tempo_flash = 50
var $slide_atual = $('#slider .atual')
var $slide_prox = $('#slider .ocultar')
setInterval(function(){
id_atual = $slide_atual.attr('alt')
$.post('get_banner.php', {atual: id_atual}, function(proximo){
temp_id = proximo.split(';;')
$slide_prox.attr('src', temp_id[0]).load(function(){
$slide_atual.hide('fade', tempo_flash, function(){
$slide_atual.attr('alt', temp_id[1]).attr('src', temp_id[0]).load(function(){
$slide_atual.show('fade', tempo_flash)
})
})
})
})
}, 4000)
以及以下 HTML 代码:
<div id="slider">
<img src="imagens/slider/imagen-slider.jpg" alt="1" class="atual"/>
<img src="" alt="" class="ocultar" />
</div>
.ocultar 类有一个
display: none;
vars tempo_flash 只是动画时间,get_banner.php 文件只用于从mysql 数据库中获取下一个banner。它经过测试并且工作正常。
我遇到的问题是,经过一点点(4 或 5 条横幅更改)后,浏览器停止响应(对于 Firefox Chrome 和 Opera),在 IE 上我收到警告 Stack overflow at line: 3 并且整个页面的 javascript 停止工作。
任何帮助表示赞赏!
【问题讨论】:
-
您是否尝试过使用调试器单步执行您的代码?
-
你应该花钱修好分号键 :-)
-
尝试将您的
$.post()更改为$.ajax()并包含timeout参数。我想 AJAX 请求需要一些时间才能完成并堆积起来,因此会占用浏览器资源。 -
我认为问题的一部分可能是您在函数外部声明了所有这些变量。没有理由这样做;它们应该在传递给
setInterval()的函数内部 声明。事实上,这些单独的功能很可能会互相影响。 -
我尝试将 var 声明放入其中,但遇到了同样的错误...我现在正尝试更改为 $.ajax,但萤火虫说每个帖子的时间少于 200 毫秒。 ..
标签: javascript jquery browser stack-overflow .post