obj.style.attr和obj.style[attr]有什么区别吗?为什么我用后者有效果,前者没效果?

来源:4-4 任意属性值(二)

qq_烟火里的尘埃_0

2016-01-30 14:48


<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <style>
       *{
           margin:0;
           padding:0;
       }
       div{
           width:200px;
           height: 80px;
           background: red;
           margin-bottom: 20px;
           border: 4px solid black;
           opacity: 0.3;
           filter: alpha(opacity:30);
       }
   </style>
   <script>
       window.onload=function(){
           var Li = document.getElementsByTagName("div")[0];
                   Li.onmouseover = function(){
                       startMove(this,'opacity',100)
                   };
                   Li.onmouseout = function() {
                       startMove(this, 'opacity', 30);
                   };
           var timer = null;

           function startMove(obj,attr,target){
                   clearInterval(timer);
                   timer = setInterval(function(){
                   var icur = 0;
                       if(attr == 'opacity'){
                           icur = parseFloat(getStyle(obj,attr))*100;
                       }else{
                           icur = parseInt(getStyle(obj,attr));
                       }

                   var speed = (target - icur)/8;
                       speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
                   if(icur == target){
                       clearInterval(timer);
                   }
                   else{
                       if(attr == 'opacity'){
                           obj.style.filter = 'alpha(opacity:'+ (icur + speed)+')';
                           obj.style.opacity = (icur + speed)/100 ;
                       }else {
                           obj.style[attr] = icur + speed + "px";
                       }

                   }
               },30)

           }
           function getStyle(obj,attr){
               if(obj.currentStyle){
                   return obj.currentStyle[attr];
               }else{
                   return getComputedStyle(obj,false)[attr];
               }
           }

       }
   </script>
</head>
<body>

<div></div>

</body>
</html>

写回答 关注

2回答

  • 时间啊
    2016-04-01 21:49:05

    后者可以加‘’单引号表示字符串,前者点后面没办法加引号,相当于不能传参,老师有讲过!

  • qq_我落泪情绪零碎_0
    2016-01-30 18:26:30

    obj.style.attr等价于obj.style['attr'],不要加点的!

    qq_烟火里...

    不好意思,我问题写错了,应该是 “obj.style.attr和obj.style[attr]有什么区别吗?为什么我用后者有效果,前者没效果?”

    2016-01-30 18:41:28

    共 1 条回复 >

JS动画效果

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

113925 学习 · 1443 问题

查看课程

相似问题