为什么给多个对象就不能实现链式运动了?用1个运动还是可以的。

来源:5-1 JS链式动画

xld

2016-06-06 10:50

var oProduct = document.getElementById('product');
				var oImg = oProduct.getElementsByTagName('li');
				for(var i=0,l=oImg.length;i<l;i++){
					/* 给每个对象都加个定时器timer */
					oImg[i].timer = null;
					oImg[i].onmouseover=function(){
						startMove(this,'opacity',100,function(){
							startMove(oImg[i],'height',150,function(){
								startMove(oImg[i],'width',250);
							});
						});
					}
					oImg[i].onmouseout = function(){
						startMove(this,'width',200,function(){
							startMove(oImg[i],'height',200,function(){
								startMove(oImg[i],'opacity',30);
							});
						});
					}
				}


写回答 关注

2回答

  • lumia2048
    2016-07-21 23:25:34

    内部函数里面的this对象指的是window对象。你可以在window.onload外面定义一个window属性

    var i = '这个i是window的属性';

    然后把你贴出的这部分代码改成

    olmg[i].i  = '这个i是oImg[i]的属性';

    oImg[i].onmouseover = function () {

                alert(this.i);

                startMove(_this, 'opacity', 100, function () {

                        alert(this.i);

                    });

            }

    你就可以看到这两个this分别指的什么,也就是说镶套函数里面已经不能够再用this代表olmg[i],只能在这个函数执行的时候把olmg[i]赋给一个变量,我这里定义一个that变量,就保存了调用这个函数的olmg[i]的引用

    oImg[i].onmouseover = function () {

                var that = this;

                startMove(that, 'opacity', 100, function () {

                    startMove(that, 'height', 150, function () {

                        startMove(that, 'width', 250);

                    });

                });

            }


  • 临风独舞翩跹
    2016-06-06 16:12:09

    oImg[i].onmouseover = function () {

                var _this = this;

                startMove(_this, 'opacity', 100, function () {

                    startMove(_this, 'height', 150, function () {

                        startMove(_this, 'width', 250);

                    });

                });

            }

    改成这样,即可,你那种,嵌套里面的fn是找不到对应的对象的,具体可以在方法里,打印obj.nodename,就能看到嵌套里的startMove,没有找到对象

    啊啊啊啊12...

    这是什么原理啊?

    2016-07-15 09:03:47

    共 1 条回复 >

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113931 学习 · 1443 问题

查看课程

相似问题