问答详情
源自:4-1 JS多物体动画

为什么下面函数用到的timer,在上面的函数用不用声明?

timer 和alpha 这两个没弄到公共属性时候,老师都给var声明了,但是放到上面的函数中就没声明? 

<script type="text/javascript">

    window.onload=function(){

         var oDiv=document.getElementsByTagName('div');

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

         oDiv[i].timer=null;

         oDiv[i].alpha=30;

         oDiv[i].onmouseover=function(){

         change(this,100);

        };

         oDiv[i].onmouseout=function(){

         change(this,30);

        }

    }

}

/*var alpha=30;*/

     function change(obj,Target){

        clearInterval(obj.timer);

        obj.timer=setInterval(function(){

          var speed=0;

         if(obj.alpha>Target){

            speed=-10;

         }else{

            speed=10;

         }

         if(obj.alpha==Target){

            clearInterval(obj.timer)

         }else{

            obj.alpha+=speed;

            obj.style.filter=='alpha(opacity:'+obj.alpha+')';

            obj.style.opacity=obj.alpha/100;

         }


        }, 30)

    }


提问者:萌九家的YuKa酱 2016-09-04 17:23

个回答

  • 深夜迷妹
    2016-09-05 13:08:50

    下面函数的timer是obj的,而obj是该函数的形参,也就是说下面函数的timer是由参数obj带着的,也就不用声明了,只要obj有timer就可以了