错误提示Cannot read property 'timer' of undefined求解

来源:7-1 JS动画案例

风风无

2016-09-12 00:34

function startMove(obj,json,fn){

clearInterval(obj.timer);

obj.timer= setInterval(function(){

var flag=true;

for(var attr in json){

//取当前属性的值

var cur= 0;

if(attr=='opacity'){

cur= Math.round(parseFloat(getStyle(obj,attr)*100)); //能让范围回到0~100

}

else{

cur = parseInt(getStyle(obj,attr));

}

//定义速度

var speed = (json[attr] - cur)/ 8 ;

// 取整速度

speed= speed >0?Math.ceil(speed):Math.floor(speed);

//立flag

if(cur!=json[attr]){

flag=false;

if(attr== 'opacity'){

//firefox浏览器

obj.style.opacity = (cur + speed)/100;

//IE浏览器 

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

}

else{

obj.style[attr]   = cur + speed +'px';

}

}

if(flag){

clearInterval(obj.timer);

if(fn){

fn();

}

}

}

},30)


}

function getStyle(obj,attr){

if(obj.currentStyle){

return obj.currentStyle[attr];

}

else{

return getComputedStyle(obj,false)[attr];

}

}

错误位置js代码第二行。这个框架在上一节里都没有问题。

写回答 关注

1回答

  • minimalistaojun
    2016-09-13 20:23:06

    我的可以正常运行。我的是 Dreamweaver CC 2015.02 Release 7884 Build 。你可以尝试一下在 .html 页面的 for 循环中为每个 obj 设置一下 timer 。像下边这样:

    for(var i = 0; i < app.length; i++)  //var app=document.getElementsByTagName('a');
    {
        app[i].timer = null;
        ...
    }


JS动画效果

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

113924 学习 · 1443 问题

查看课程

相似问题