A-A+
js获取非行间样式/定义样式
今天又学到了 js 获取非行间样式,如果直接获取行间样式的话是很简单的,按照正常的流量来走就可以了,但如果要获取非行间样式的话,比如CSS里面的样式,哪就会出现获取不到的问题,只能使用 currentStyle 来进行获取了,但使用 currentStyle 在非IE下面又不能使用了,出现了兼容性的问题,使用 currentStyle 在火狐下出现 undefined 的错误,所以说这个 JS 的兼容好难解决的说,看视频教程,老师讲了一大堆,自己实在也不想练习了,直接把兼容性的 js 获取非行间样式的代码给贴出来吧,仅供夏日博客参考使用好了。
- <!--DOCTYPE html-->
- <html>
- <head>
- <meta charset="utf-8" />
- <style>
- *{ text-align:center;}
- input{ margin-top:30px; padding:10px 20px;}
- #div1{ width:500px; height:300px; background:red; margin:10px auto;}
- </style>
- </head>
- <body>
- <input type="button" value="style" id="btn" />
- <div id="div1"></div>
- <script>
- //获取非行间css样式
- function getStyle(obj,attr){ //获取非行间样式,obj是对象,attr是值
- if(obj.currentStyle){ //针对ie获取非行间样式
- return obj.currentStyle[attr];
- }else{
- return getComputedStyle(obj,false)[attr]; //针对非ie
- };
- };
- //为对象写入/获取css样式
- function css(obj,attr,value){ //对象,样式,值。传2个参数的时候为获取样式,3个是设置样式
- if(arguments.length == 2){ //arguments参数数组,当参数数组长度为2时表示获取css样式
- return getStyle(obj,attr); //返回对象的非行间样式用上面的getStyle函数
- }else{
- if(arguments.length == 3){ //当传三个参数的时候为设置对象的某个值
- obj.style[attr] = value;
- };
- };
- };
- window.onload = function(){
- var oDiv = document.getElementById("div1");
- var oBtn = document.getElementById("btn");
- oBtn.onclick = function(){
- alert(getStyle(oDiv,"height"));
- css(oDiv,"background","green");
- alert(css(oDiv,"width"));
- };//xiariboke.net
- };
- </script>
- </body>
- </html>
感谢楼主的分享,赞赞。
又是研究JS了,厉害