我们都知道用offset函数获取元素样式是一件很方便的事,但是offset只能获取行间样式,而无法获得非行间样式,这是它的瓶颈所在。

我们都知道js获取行间样式的方法,那么js是如何获取行距样式的呢?

首先让我们看一下js是如何获取行间样式的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>获取<span class="wp_keywordlink_affiliate"><a href="http://www.webclks.com/archives/tag/%e8%a1%8c%e9%97%b4%e6%a0%b7%e5%bc%8f" title="查看行间样式中的全部文章" target="_blank">行间样式</a></span></title>
<script>
window.onload=function ()
{
var oDiv=document.getElementById("div1");
alert(oDiv.style.width);
}
</script>
</head> <body>
<div id="div1" style="width:200px; height:200px; background:red;"></div>
</body>
</html>
 

大家运行代码可以看到我们这样就获取到了div的行间样式的宽度为200px,那么如果我们现在写的不是行间样式还能获取到div的样式吗?我们把上面的代码变一下,代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>获取行间样式</title>
<style>
#div{width:200px; height:200px; background:red;}
</style>
<script>
window.onload=function ()
{
var oDiv=document.getElementById("div1");
alert(oDiv.style.width);
}
</script>
</head>

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

 

我们运行代码可以看到在这种情况下我们是无法获取到div的宽度属性值了,如果我们想要在现在的情况下获取到div的宽度属性值,我们又应该怎么操作呢?解决方案:引入currentStyle;我们把上面的代码改一下,代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>获取<span class="wp_keywordlink_affiliate"><a href="http://www.webclks.com/archives/tag/%e9%9d%9e%e8%a1%8c%e9%97%b4%e6%a0%b7%e5%bc%8f" title="查看非行间样式中的全部文章" target="_blank">非行间样式</a></span></title>
<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>
</html>

 

我们在运行代码,OK,IE里面现在是没问题,证明上面的代码很好用,但是当我们用FF浏览器打开的时候,页面出问题了,在这儿补充一点:但凡是好用的代码99%以上不兼容,那么我们怎么办?解决方案:引入getComputedStyle;getComputedStyle(oDiv, false).width;第一个参数要获取物体的样式,第二个暂时没发现有什么用处,可以随便放;我们把上面代码修改一下,代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>获取行间样式</title>
<style>
#div{width:200px; height:200px; background:red;}
</style>
<script>
window.onload=function ()
{
var oDiv=document.getElementById("div1");
alert(oDiv.style.width);
}
</script>
</head> <body>
<div id="div1"></div>
</body>
</html>

我们运行代码可以看到FF已经没问题,但是接下来看我的IE浏览器,又出现问题,说明咱们用的这两个方法都是不兼容的,所以我们要找到一种解决办法,让所有的浏览器都要兼容。我们再把上面的代码做一下修改,代码如下:

<textarea name="run_j57" id="run_j57">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;获取行间样式&lt;/title&gt;
&lt;style&gt;
#div1{width:200px; height:200px; background:red;}
&lt;/style&gt;
&lt;script&gt;
window.onload=function ()
{
var oDiv=document.getElementById("div1");
if(oDiv.currentStyle) //IE下为真,FF下为假
{
alert(oDiv.currentStyle.width)
}
else
{
alert(oDiv.getComputedStyle(oDiv, false).width);
}
}
&lt;/script&gt;
&lt;/head&gt; &lt;body&gt;
&lt;div id="div1"&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</textarea>
 

好的,现在我们再运行代码试一下,IE、FF都没有问题了,当然你也可以测试更多浏览器,完全是没问题。到此咱们就可以完美的获取到div的非行间样式了。

JS获取非行间样式的更多相关文章

  1. js获取非行间样式/定义样式

    <!--DOCTYPE html--> <html> <head> <meta charset="utf-8" /> <sty ...

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

    获取非行间样式: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

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

    <!--DOCTYPE html--> <html> <head> <meta charset="utf-8" /> <sty ...

  4. js获取非行间样式/写入样式(行间)

    <!--DOCTYPE html--> <html> <head> <meta charset="utf-8" /> <sty ...

  5. js 获取非行间样式

    1.getComputedStyle(nodeObj,false):该方法是BOM对象,第一个是要获取样式的节点对象:第二个可以写成任何的字符一般写成false或者null,这里最好是用false因为 ...

  6. js和jquery中获取非行间样式

    样式又分为了行间样式和非行间样式.一般来说行间样式用的是比较少的,因为它能够作用的范围就只有一个元素,而非行间样式的作用范围可以是一类元素(即拥有相同德标签,或者说是有相同的类名,(当然id名不可能相 ...

  7. js兼容总结之获取非行间样式

    非行间样式案例 #div1 { width: 200px; height: 200px; background: red; } IE获取非行间样式 var oDiv = document.getEle ...

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

    html节点的样式分为以下几种 (1)浏览器默认样式 (2)引用样式(引用外部css文件的样式.style标签内定义的样式) 引用外部css样式:<link rel="styleshe ...

  9. 原生js提取非行间样式

    js用style属性可以获得html标签的样式,但是不能获取非行间样式,如何获取css的非行间样式呢,在低版本ie我们可以用currentStyle,在其他浏览器我们可以用getComputedSty ...

随机推荐

  1. php扩展mssql.so连接sqlserver2008

    1.安装配置freetds  wget http://mirrors.xmu.edu.cn/ubuntu/archive/pool/main/f/freetds/freetds_0.82.orig.t ...

  2. linux查看公网地址

    curl cip.cc curl http://members.3322.org/dyndns/getip

  3. Java基础之读文件——使用通道读取混合数据2(ReadPrimesMixedData2)

    控制台程序,本例读取Java基础之写文件部分(PrimesToFile2)写入的Primes.txt. 方法二:设置一个任意容量的.大小合适的字节缓冲区并且使用来自文件的字节进行填充.然后整理出缓冲区 ...

  4. 不等高cell的搭建(一)

    一.界面搭建   1.确定开发模式      如果界面是固定的,可以用xib      界面的一些内容不固定,就用纯代码      cell用什么方式去开发(我们采用纯代码和xib结合的方式)   2 ...

  5. J2EE MyBatis使用

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .20 ...

  6. 通过zabbix自带模板监控windowsPC机器

       通过zabbix自带模板监控windowsPC机器   作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.       欢迎加入:高级运维工程师之路 598432640 相信有很多 ...

  7. 当android studio一直显示gradle compile dependency

    出现这种情况,是被墙的问题,我的解决办法是这样的: 打开file---->setting,然后搜索gradle,把offline勾上,然后点击apply以及ok,就可以了. 有时候它会关闭,只需 ...

  8. java 虚拟机工具

    jps 命令 可以查询开启了rmi服务的远程虚拟机进程状态. -v jvm参数. jstat -gcutil命令 [cangyue@/System/Library/Frameworks/JavaVM. ...

  9. fault coverage enhancement

    在pseudo-random test中,由于random pattern resistant的特性,fault coverage不是sufficient的, 所以会有一些办法来进行coverage的 ...

  10. 用javascript在客户端删除某一个cookie键值对

    下面这个方法展示如何在客户端浏览器上用javascript删除某一个cookie键值对. //用javascript删除某一个cookie的方法,该方法传入要删除cookie的名称 function ...