setTimeout做轮播图的问题

HelloBitches 2017-04-19 02:49:11

<script type="text/javascript" src='jquery.js'></script>
<script>
$(function(){
function slide() {
$('.slide_qc>ul').animate({
left:-980 + 'px'
})
setTimeout(slide,2000);
}
setTimeout(slide,2000)
})
</script>

这 种写法 只执行一次 就是执行到第二张就不再继续了

<script type="text/javascript" src='jquery.js'></script>
<script>
$(function(){
function slide() {
$('.slide_qc>ul').animate({
left:-980 + 'px'
})
setTimeout(slide,2000);
}
slide();
})
</script>

这种写法在打开页面的一瞬间执行 也是只执行到第二次 然后停止

之前一直用setInterval 昨天发现setInterval某些情况会有bug 于是用setTimeout重写 可是一直有问题 网上找的东西大多执行不出我想要的效果
...全文
274 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
HelloBitches 2017-04-19
  • 打赏
  • 举报
回复
谢谢各位
天际的海浪 2017-04-19
  • 打赏
  • 举报
回复
你的问题不是setTimeout()的事,你可以在函数中加个console.log();看看是不是每2秒输出一次。 你问题出在animate()上 left: -980 + 'px'是元素固定移动到-980的位置,第二次执行时元素已经在-980的位置了,当然就不再移动了。 要想每次都向左移动980的距离应该是 left: "-=" + 980 + 'px'
qq137051908 2017-04-19
  • 打赏
  • 举报
回复

$(function(){
	var _index=0;
    function slide() {
    	_index++;
        $('.slide_qc>ul').animate({
            left:-980*_index + 'px'
        })
        setTimeout(slide,2000);
    }
    slide();
})
不是没有执行, 而是到 -980这个位置 你后续还是设置到这个位置,怎么会动?
HelloBitches 2017-04-19
  • 打赏
  • 举报
回复
引用 1 楼 apollokk 的回复:
光一个left-980怎么轮播?
我还没有往下写 现在就是无法实现用setTimeout每隔一段时间就执行一次代码的效果
Hello World, 2017-04-19
  • 打赏
  • 举报
回复
光一个left-980怎么轮播?

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧