2016-03-07 39 views
0

我用下面的代码进行动画元素的不透明度:为什么我在下面的递归函数中得到“X不是函数”?

 var opacity = 0 // starting opacity 
     var step = 0.1 // step size 
     var target = 1 // target value 
     var time = 50 // delay in milliseconds 
     // start timer loop, and record it's index 
     var increaseOpacity = setInterval(function() { 
     // assuming your selector works, set opacity 
     $(`#pano-${index}`).attr({ opacity: opacity }) 
     // increment opacity by step size 
     opacity += step 
     // if we reached our target value, stop the timer 
     if (opacity >= target) { 
      clearInterval(increaseOpacity) 
     } 
     }, time) 

     $('.pano').attr({ opacity: 0 }) 
     increaseOpacity() 

它的工作原理。但是,每次运行该函数时,我都会得到Uncaught TypeError: increaseOpacity is not a function

这是为什么,以及如何解决它?

+3

因为它不是一个'function'..It返回定时器的ID .. – Rayon

+1

也使用'.css'来设置任何css属性,而不是'.attr' –

+0

@Rajaprabhu Aravindasamy元素没有'style'属性只有'opacity':https://aframe.io/docs/components/material html的 – alex

回答

2

However, I get Uncaught TypeError: increaseOpacity is not a function every time I run the function.

increaseOpacity不是一个函数对象,它是定时器的识别符,以便能clearInterval停止并清除计时器以后。

Why is this and how to fix it?

你可以简单地删除该函数调用,因为它会被setInterval方法被自动调用。

1

setInterval返回一个区间索引而不是函数。

var increaseOpacity = function() { 
    // ... 
    if (opacity >= target) { 
    clearInterval(increaseOpacityInterval); 
    } 
}; 

var increaseOpacityInterval = setInterval(increaseOpacity); 
0

你在做什么只是把setInterval的到一个变种 这意味着你定义一个变种记住时间执行功能

没有必要调用它,因为它执行任何方式通过你的代码的流程 什么你可以使用你的新VAR增加未来的透明度是清除这个功能setInterval如果你想禁用它......

如果你想这一步被称为一个功能你所需要做的就是

var increaseOpacity = function(){ 
    var SomeNewVarForInterval = setInterval(function() { 
    // assuming your selector works, set opacity 
    $(`#pano-${index}`).attr({ opacity: opacity }) 
    // increment opacity by step size 
    opacity += step 
    // if we reached our target value, stop the timer 
    if (opacity >= target) { 
     clearInterval(SomeNewVarForInterval) 
    } 
    }, time) 
} 

最好是你仍然会记得的setInterval成变种,如果你想清除的地方在将来

相关问题