1 //获取对象样式属性
 2 function getStyle(obj, attr)
 3 {
 4     if(obj.currentStyle)
 5     {
 6         return obj.currentStyle[attr];
 7     }
 8     else
 9     {
10         return getComputedStyle(obj, false)[attr];
11     }
12 }
13 
14 //多物体任何值运动框架
15 function elemsMove(obj, attr, iTarget, fn)
16 {
17     if(obj.timer)
18     {
19         clearInterval(obj.timer);
20     }
21     var repeat = function()
22     {
23         //用getStyle函数获取通用样式值
24         var iStyle = 0;
25 
26         //为支持透明度做判断处理
27         if(attr == 'opacity')
28         {
29             //为ispeed处理数为整数需*100,同时为避免使用小数需再取整
30             iStyle = parseInt(parseFloat(getStyle(obj, attr)) * 100);
31         }
32         else
33         {
34             iStyle = parseInt(getStyle(obj, attr));
35         }
36 
37         var ispeed = (parseInt(iTarget) - iStyle) / 8;
38         ispeed = ispeed > 0 ? Math.ceil(ispeed) : Math.floor(ispeed);
39 
40         if(iStyle == iTarget)
41         {
42             clearInterval(obj.timer);
43             if(fn)
44             {
45                 fn();
46             }
47         }
48         else
49         {
50             if(attr == 'opacity')
51             {
52                 obj.style.filter = 'alpha(opacity:' + (iStyle + ispeed) + ')';
53                 obj.style.opacity = (iStyle + ispeed) / 100;
54             }
55             else
56             {
57                 obj.style[attr] = iStyle + ispeed + 'px';
58             }
59         }
60     };
61     obj.timer = setInterval(repeat, 30);
62 }