获取非行间样式

首先举个获取行间样式的例子
1、html元素样式写在行间

<div id="div1" style="width:200px;height:200px;background:red"></div>

获取行间样式

<script>
window.onload=function()
{
    var oDiv=document.getElementById('div1');
    alert(oDiv.style.width);
}
</script>

结果:弹出‘200px‘;
这里写图片描述

2.若将html元素样式不写在行间,例如写在css样式表或style中如下:

<div id="div1" ></div>
<style>
#div1{
   width:200px;
   height:200px;
   background:red;
}
</style>

现在使用之前方法获取样式

<script>
window.onload=function()
{
    var oDiv=document.getElementById('div1');
    alert(oDiv.style.width);
}
</script>

结果:弹出
这里写图片描述
3.若将样式写在非行间时想获取非行间样式就要用到currentStyle(*注IE兼容,其他不兼容)

<style>
#div1 {
    width:200px;
    height: 200px;
    background: red;
}
</style>
<script>
window.onload=function()
{
    var oDiv=document.getElementById('div1');
    alert(oDiv.currentStyle.width);
}
</script>
</head>
<body>
<div id="div1">
</div>
</body>

这里写图片描述

还可以使用getComputedStyle(低版本ie不兼容)

<script>
window.onload=function()
{
    var oDiv=document.getElementById('div1');
    alert(getComputedStyle(oDiv,false).width);
}
</script>

为了解决兼容性问题:
alert(oDiv.currentStyle)在ie中alert的是object,在火狐中alert的是undefind,所以添加if判断使用时机,如下兼容性即可解决

<script>
window.onload=function()
{
    var oDiv=document.getElementById('div1');

    if(oDiv.currentStyle)
    {
    //ie
        alert(oDiv.currentStyle.width);
    }else{
    //FF
        alert(getComputedStyle(oDiv,false).width);
    }

}
</script>
</head>
<body>
<div id="div1">
</div>
</body>

简化if else兼容判断(封装一个函数):
结果:弹出200px

<script>
function getStyle(obj,name){
    if(obj.currentStyle){
        return obj.currentStyle[name];
        }
        else
        {
           return getComputedStyle(obj,false)[name];    
        }
    }
window.onload=function()
{
    var oDiv=document.getElementById('div1');

    alert(getStyle(oDiv,'width'));

}
</script>
</head>
<body>
<div id="div1">
</div>
</body>

若写alert(getStyle(oDiv,’background’));则会弹出空。因为background为复合样式,例如还有border
*注:没办法取符合样式,可以取单一样式,如width,height等,若想取背景色可以写alert(getStyle(oDiv,’background-color’));

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值