JavaScript 学习—— js获取行间样式和非行间样式

1. 问题引入

<head>
<style>
    #div1{
        width:150px;
        height:200px;
        position:absolute;
        left:-150px;
        background: green;
    }
</style>
<script>
    window.onload = function(){
        var oDiv1 = document.getElementById(‘div1‘);
        alert(oDiv1.style.left); //获取left属性的值
    }
</script>
</head>

<body>
<div id="div1"></div>
</body>

上面代码的意思是想要获取得到id="div1"元素的left属性值。但是当我们运行上面代码的时候就会发现,弹窗弹出的内容确实什么都没有。

我们明明在<style></style>标签内定义了该元素的left属性,为什么alert(oDiv.style.left);确实返回一个什么都没有的弹窗呢?

其实,这个问题的原因是:oDiv1.style.left这样的格式来获取的left是非行间样式的left。

2. 什么是非行间样式?

非行间样式就是指不是写在标签体内的style属性的样式。如上面的代码中<style>....</style>内的定义的样式都是非行间样式。

3. 那什么是行间样式?

行间样式就是写在标签体内的样式:如,<div style="left:100px">,在这里left样式就是行间样式。

4. 那我们该如何获取行间样式呢?

要获取行间样式我们可以这样操作:

低版本ie浏览器下使用oDiv1.currentStyle.left;进行获取非行间样式。

其它浏览器下使用var style = window.getComputedStyle(oDiv1,null);  //第二个参数直接传入null就行,没什么作用的。

          alert(style.left); //便可以返回行间样式的left属性值

5. 整合在一起,兼容所有浏览器的代码:

 window.onload = function(){
        var oDiv1 = document.getElementById(‘div1‘);
        if(oDiv1.currentStyle){
            alert(oDiv1.currentStyle.left);
        }else{
            alert(getComputedStyle(oDiv1,null).left);
        }
    }
时间: 2024-10-29 19:10:04

JavaScript 学习—— js获取行间样式和非行间样式的相关文章

javascript 行间样式与非行间样式获取方法

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> .style001 {width: 300px;height: 300px;margin: 20px;padding: 30px;border: 20px gr

javascript获取行间样式和非行间样式--兼容写法

style:获取行间样式: currentStyle:获取计算后的样式,也叫当前样式.最终样式. 优点:可以获取元素的最终样式,包括浏览器的默认值,而不像style只能获取行间样式,所以更常用到.注意:不能获取复合样式如background属性值,只能获取单一样式如background-color等. alert (oAbc.currentStyle);IE8和Opera 11弹出了“object CSSStyleDeclaration”:FF 12.chrome 14.safari 5则弹出“

JS获取非行间样式

我们都知道用offset函数获取元素样式是一件很方便的事,但是offset只能获取行间样式,而无法获得非行间样式,这是它的瓶颈所在. 我们都知道js获取行间样式的方法,那么js是如何获取行距样式的呢? 首先让我们看一下js是如何获取行间样式的: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitiona

JavaScript获取非行间样式/定义样式

html节点的样式分为以下几种 (1)浏览器默认样式 (2)引用样式(引用外部css文件的样式.style标签内定义的样式) 引用外部css样式:<link rel="stylesheet" href="css/style.css" type="text/css"> style标签内:<style> width:100px; </style> (3)行间样式(节点style属性定义的样式)比如:<div

js获取非行间样式或定义样式

1 <!--DOCTYPE html--> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <style> 6 *{ text-align:center;} 7 input{ margin-top:30px; padding:10px 20px;} 8 #div1{ width:500px; height:300px; background:red; margin:10px aut

js用currentStyle和getComputedStyle获取css样式(非行间) 兼容ie与火狐

用js的style属性可以获得html标签的样式,但是不能获取非行间样式.那么怎么用js获取css的非行间样式呢?在IE下可以用currentStyle,而在火狐下面我们需要用到getComputedStyle.下面是js代码. function getStyle(obj, name) { if(obj.currentStyle) { return obj.currentStyle[name]; } else { return getComputedStyle(obj,false)[name];

Js获取/设置行内样式和非行内样式

1.获取行内(内嵌.行间)样式: obj.style.attr;进行获取非行间样式. 2.设置行内样式: obj.style.attr = value; 3.获取非行内样式: function getStyle(obj,attr){ //获取非行间样式,obj是对象,attr是值 if(obj.currentStyle){ //针对ie获取非行间样式 return obj.currentStyle[attr]; }else{ return getComputedStyle(obj,false)[

JS获取元素非行间样式的方法

currentStyle :只兼容IE浏览器 getComputedStyle :获取计算后的样式,不兼容IE6.IE7.IE8 如何获取非行间样式,同时兼容所有浏览器呢? window.onload=function(){ var oDiv1=document.getElementBy("div1"); if(oDiv.currentStyle){ //如果浏览器支持currentStyle oDiv.currentStyle.width; }else{ //如果浏览器不支持curr

JS获取非行间样式及兼容问题

获取非行间样式: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>获取非行间样式</title> <style> #div1{height: 200px;width: 200px;background-color: red;} </style> <script> fun