对于一个没有编程基础的人来说,我时常希望能有人告诉我,当我们看到一个效果的时候,该怎样有条理地分析出它的行为,而我自己有必要加强这方面的 自省,对于一个轮播图我是这样看的,自动播放必然带有一个定时器,而播放某帧(若假设为渐变为实),渐变就必然也有一个定时器。

    1:人通过鼠标控制一个轮播的自动播放autoPlay。

           a.当鼠标移入轮播图范围的时候,轮播图停止自动播放,反之开始自动播放:

             oBox.onmouseover=function(){

              clearInterval(play);

             }

             oBox.onmouseout=function(){

             autoPlay();  

             }

           b.当鼠标移到某按钮时,就播放该帧:(这里是这样思考的:必然按钮和图之间有一种联系来互相控制,它就是参数)

             for(var i=0;i<aNum.length;i++){

             aNum[i].index=i;//为每一个按钮添加一个“号码牌”属性;

             show(this.index)

             }

    2:自动播放控制着每帧的播放show():

           function autoPlay(){

           play=setInterval(

             index++;

             index>=aNum.length && (index=0);//当播放到最后一帧,2秒后又++变为第aNum.length帧(空),就让它重头播放

             show(index);

             },2000)

            autoPlay();

    3:每帧的播放show(),每一次都先让所有帧都透明度变为0,也标记特定按钮,然后让特定帧实度渐增至opacity=1;

           function show(a){  //需要播放来自自动播放产生的、鼠标移至按钮产生的特定帧,靠参数控制

           for(var i=0;i<aLi.length;i++) aLi[i].style.opacity="";//未做兼容

           for(var i=0;i<aNum.length;i++){

            aNum[i].className="";

            }

            aNum[a].className="current";

            var alpha=0;//最好在函数头声明

            timer=setInterval(function(){

            alpha++2;

            alpha>100 && (alpha=100);

            aLi[a].style.opacity =""+alpha/100;

            alpha==100 && clearInterval(timer);

            },20)

            }