首页 新闻 会员 周边 捐助

JavaScript看下这个值随时间变化而变化的函数为什么出错

0
悬赏园豆:15 [已解决问题] 解决于 2013-05-28 20:43
var w=window;//先给变量w赋值window
function B(v_Cg,v_C,v,j,I,st,t,D,C){
function CgE(){
L=0;
for(L in v){
v[L]+=j[L];
V[L]=v[L];
if(I)
V[L]=Math.round(V[L]);
}
if(v.length==1)
D(V[0]);
else
D(V);
J++;
if(J!=t)
eval(v_Cg+'=w.setTimeout(CgE,st);');
else
eval(v_C+'=w.setTimeout(C,1);');
}
var J,L,V;
V=[];J=0;
if(T(v)!='array' && T(j)!='array'){
v=[v];j=[j];
}
eval(v_Cg+'=w.setTimeout(CgE,st);');
}
这是个随时间变化改变值的函数。
其中没提到的T()是个检查变量类型的函数,该函数正常。
参数解释如下:
v_Cg :用来setTimeout改变值的变量的名字。
v_C :用来CallBack的变量的名字。
v :初始值。(可以是正负浮点数,整数,或者全是数字的数组)
j :每次改变的值。(可以是正负浮点数,整数,或者全是数字的数组)
I :变化的结果是否取整数。布尔值。
st :每次变化之间的时间间隔。单位毫秒。
t :变化次数。整数。
D:每次变化后执行的函数。
C:CallBack。

v为初始值,每间隔st毫秒钟,v加j,然后执行一次D函数,参数为变化后的t,一共变t次,变完后执行C函数。

例如我可以用这个函数来对一个div进行动画。
<div id="abc" style="width:100px;height:50px;background:#333;"></div>
<script>
var CgS,CS;
window.onload=function(){

C('CgS','CS',50,3,false,10,100,function(n){
document.getElementById('abc').style.height=n+'px';
},function(){alert('1');});
}
</script>
为什么这个动画执行了3秒?理论应该是1秒。
JSBY院长的主页 JSBY院长 | 初学一级 | 园豆:97
提问于:2013-05-16 19:58
< >
分享
最佳答案
0

因为CSS操作时间长,应把setTimeout放在最先

JSBY院长 | 初学一级 |园豆:97 | 2013-05-28 20:42
其他回答(2)
0

居然有问着中问题的。。看着头疼

收获园豆:8
TiestoRay | 园豆:687 (小虾三级) | 2013-05-17 11:13

看你的错别字也很头疼

支持(0) 反对(0) 在大地画满窗子 | 园豆:102 (初学一级) | 2013-05-21 17:55
0

C,T指向什么?

收获园豆:7
积跬步 | 园豆:214 (菜鸟二级) | 2013-05-17 15:55

没有大写T啊?

支持(0) 反对(0) JSBY院长 | 园豆:97 (初学一级) | 2013-05-18 14:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册