我的滑块没有自动模式

我创建简单的滑块手风琴ans是我的代码,这是唯一的问题,它适用于工作自动模式,并且工作

我的代码:

 #ac_content { width:900px; height:300px; margin:auto; background-color:#808080; overflow:hidden; } #ac_cols_float { position:relative; float:left; line-width:70px; height:100%; background-color:#000000; margin-right:3px; cursor:hand; cursor:pointer; } #ac_cols_float_infor { position:relative; float:left; width4544:535px; height:100%; background-color:#ff0000; } .rot-neg{ margin-top:40px; margin-left:20px; font-size:20px; color:#FFFFFF; -moz-transform: rotate(90.0deg) translate(-40px,0px); /* FF3.5+ */ -moz-transform-origin: 0 100%; -o-transform: rotate(90.0deg) translate(-40px,0px); /* Opera 10.5 */ -o-transform-origin: 0 100%; -webkit-transform: rotate(90.0deg) translate(-40px,0px); /* Saf3.1+, Chrome */ -webkit-transform-origin: 0 100%; transform: rotate(90.0deg) translate(-40px,0px); /* Saf3.1+, Chrome */ transform-origin: 0 100%; filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1.0); /* IE6,IE7 */ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1.0)"; /* IE8 */ } #rote { position:absolute; }   var w="900"; var w_col="50"; var n_cols="5"; var margin=3*n_cols; var result=w_col*n_cols+margin; var final=w-result; $(function(){ for (i=0;i<=5;i++) { $(".ac_"+i+"").css("width",""+w_col); } }); function acordeon(id) { $(function(){ $(".ac_"+id+"_inf").css("width",""+final); $(".ac_"+id+"_inf").show(2000).fadeIn(2000); for (i=0;i<5;i++) { if (+id==i) { } else { $(".ac_"+i+"_inf").hide(1000); } } }); }   // AUTOMATIC MODE NO WORKS !!! for (i=0;i<=5;i++) { setTimeout(function(){ acordeon(i); },1000); }  
Web Design .....

问题在于你可以看到//自动模式没有工作! ,其他工作很好,完美,问候并感谢您的帮助!

似乎也有一些范围问题。 我会将acordeon-function放在一个对象文字(namespace-ish)中,这样你就可以对它有更多的控制权:

看看这个小提琴: http : //jsfiddle.net/3mfJ2/

我改变的基本上是这样的:

 myfuncs = { acordeon: function(id) { $(function(){ $(".ac_"+id+"_inf").css("width",""+final); $(".ac_"+id+"_inf").show(2000).fadeIn(2000); for (i=0;i<5;i++) { if (+id==i) { } else { $(".ac_"+i+"_inf").hide(1000); } } }); } } 

将自动循环更改为

 var starting_slide = 5; function setSlide(i) { acordeon(i); if (i > 1) { i--; setTimeout( function(){setSlide(i)}, 1000); } /* //if dont want it to stop else { setTimeout( function(){setSlide(starting_slide)}, 1000); } */ } ​setSlide(starting_slide);​ 

因为当前的for循环不会等待并同时执行这5个超时。