获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)


Posted in Javascript onFebruary 14, 2011

可是DOM.style这种写法只能访问<DOM style=""></DOM>,这样在标签里内置的样式,如果样式写在<style type="text/css"></style>,或者.css文件里,那么就办法读到样式了。

其实呢,还有别的方法可以读到这些样式信息,方法有两种,一种是通过document.styleSheets对象,另一种是通过“最终样式”对象。其中 IE中这个对象叫做currentStyle,FF中这个对象叫做document.defaultView。我将这两个类打包了一下,做了一个用于访问 样式信息的函数,如下:

//===========================访问样式表函数==================================== 
function returnStyle(obj,styleName){ 
var myObj = typeof obj == "string" ? document.getElementById(obj) : obj; 
if(document.all){ 
return eval("myObj.currentStyle." + styleName); 
} else { 
return eval("document.defaultView.getComputedStyle(myObj,null)." + styleName); 
} 
}

函数有两个参数:

obj:访问的对象,类型为DOM对象,或者是对象的id;

styleName: 需要访问的样式名称。类型为string,但是名称不能用"-"号,要用像style.对象的属性名一样的大小写混写名称,例如background-color要写成backgroundColor。

函数返回值为 string类型。

注意:这个方法只能访问样式文件,不能写。如果要写样式,还是要用DOM.style.XXX的方法。另外,FF下有些样式访问有问题,例如padding,margin。如果样式中设置了padding,margin等值,我们可以用marginLeft来返回值。

<!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" /> 
<style type="text/css"> 
#demo{background-color:#000;padding:10px;color:#fff;width:200px;} 
</style> 
<script type="text/javascript"> 
//===========================访问样式表==================================== 
function returnStyle(obj,styleName){ 
var myObj = typeof obj == "string" ? document.getElementById(obj) : obj; 
if(document.all){ 
return eval("myObj.currentStyle." + styleName); 
} else { 
return eval("document.defaultView.getComputedStyle(myObj,null)." + styleName); 
} 
} 
</script> 
<title></title> 
</head> 
<body> 
<div id="demo">这里是测试内容</div> 
<br /><br /> 
<a href="###" onclick="alert(returnStyle('demo','width'));">点击测试</a> 
</body> 
</html>

===========================
function getStyle( elem, name ) { 
//如果该属性存在于style[]中,则它最近被设置过(且就是当前的) 
if (elem.style[name]) 
return elem.style[name]; 
//否则,尝试IE的方式 
else if (elem.currentStyle) 
return elem.currentStyle[name]; 
//或者W3C的方法,如果存在的话 
else if (document.defaultView && document.defaultView.getComputedStyle) { 
//它使用传统的"text-Align"风格的规则书写方式,而不是"textAlign" 
name = name.replace(/([A-Z])/g,"-$1"); 
name = name.toLowerCase(); 
//获取style对象并取得属性的值(如果存在的话) 
var s = document.defaultView.getComputedStyle(elem,""); 
return s && s.getPropertyValue(name); 
//否则,就是在使用其它的浏览器 
} else 
return null; 
}
Javascript 相关文章推荐
javascript Excel操作知识点
Apr 24 Javascript
javascript计算星座属相(十二生肖属相)示例代码
Jan 09 Javascript
jQuery中offset()方法用法实例
Jan 16 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
Aug 27 Javascript
js仿淘宝和百度文库的评分功能
May 15 Javascript
JSON字符串转换JSONObject和JSONArray的方法
Jun 03 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
Feb 22 Javascript
微信小程序商城项目之商品属性分类(4)
Apr 17 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
Nov 23 Javascript
使用JS获取页面上的所有标签
Oct 18 Javascript
浅谈JS和jQuery的区别
Mar 27 jQuery
vue实现登录拦截
Jun 29 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
Feb 14 #Javascript
JQuery 选择器、过滤器介绍
Feb 14 #Javascript
AJAX分页的代码(后台asp.net)
Feb 14 #Javascript
基于jquery的图片的切换(以数字的形式)
Feb 14 #Javascript
jquery isType() 类型判断代码
Feb 14 #Javascript
jquery isEmptyObject判断是否为空对象的函数
Feb 14 #Javascript
jquery each()源代码
Feb 14 #Javascript
You might like
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
php实现多城市切换特效
2015/08/09 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
详解Django通用视图中的函数包装
2015/07/21 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
解决Python使用列表副本的问题
2019/12/19 Python
python模拟实现斗地主发牌
2020/01/07 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
python 利用toapi库自动生成api
2020/10/19 Python
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
请说出几个常用的异常类
2013/01/08 面试题
个人自我鉴定范文
2013/10/04 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
2014年团队工作总结
2014/11/24 职场文书
结婚保证书(卖身契)
2015/02/26 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
golang goroutine顺序输出方式
2021/04/29 Golang
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android