获取元素的style样式(内联,内部)

我们在实际应用中,经常会获取元素的样式,
我们会这样获取:

获取内嵌样式

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>获取非行间元素样式</title> 
    <style type="text/css"></style> 
</head> 
<body>
    <div id='test' style="width:100px; height:100px; background-color:red;" >style</div> 

    <script type="text/javascript">

        var test = document.getElementById('test');
        var a = test.style.width;
        alert(a);

    </script>
</body> 
</html> 

执行结果

这里写图片描述

我们看结果,好的,没问题,获取出来了,但是实际应用中,我们是这样用的吗?不是,我们是这样用的

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>获取非行间元素样式</title> 
    <style type="text/css">
        #test{
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style> 
</head> 
<body>
    <div id='test'>style</div> 

    <script type="text/javascript">

        var test = document.getElementById('test');
        var a = test.style.width;
        alert(a);

    </script>
</body> 
</html> 

看起来没问题是吧,好的,我们测一下结果

这里写图片描述

结果很惊讶,这是为什么?

获取非行间样式(内部样式)

其实解决方式是这样的,

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>获取非行间元素样式</title> 
    <style type="text/css">
        #test{
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style> 
</head> 
<body>
    <div id='test'>style</div> 

    <script type="text/javascript">
        /*
         *获取元素的非行间样式
         *
         * oDiv -> dom元素对象
         * attr -> style属性
         *
         *返回值 -> style属性的值
         **/
        function getStyle(oDiv, attr){
            if(oDiv.currentStyle){
                //针对IE浏览器
                return oDiv.currentStyle[attr];
            }else{
                //Firefox浏览器
                return getComputedStyle(oDiv, false)[attr];
            }
        }

        var test = document.getElementById('test');
        var a = getStyle(test, 'width');
        alert(a);

    </script>
</body> 
</html> 

然后顺利的得到了这样的结果

这里写图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值