js如何获取非行间样式

JavaScript05

js如何获取非行间样式,第1张

本篇文章主要介绍了js获取非行间样式的相关知识,具有很好的参考价值。下面跟着我一起来看下吧

我们都知道,js不能直接获取样式表中的样式,例如width,left,只能直接获取行内样式,但是现在主流不建议写行内样式,因此我们封装一个可以直接获取非行间样式的函数

currentStyle是IE中的属性,getComputedStyle是其他浏览器的方法

(1) getStyle(注意其有两个参数);

第一个参数 obj 为要获取的对象,第二个参数attr为要获取的属性,

(2)在非行间样式中,style属性只能去赋值,在行间样式中才能去获取样式;

行间样式是指通过style.xx获得的样式,但对于class引用的 属性无法获取,

如果要获取class引用的属性,则需要

function getStyle(obj,attr){    //获取非行间样式,obj是对象,attr是值

    if(obj.currentStyle){   //针对ie获取非行间样式

        return obj.currentStyle[attr]

    }else{

        return getComputedStyle(obj,false)[attr]   //针对非ie

    }

}

代码拷贝于http://www.cnblogs.com/piercalex/p/3386574.html

我们把这句代码分为3部分:

--n:自减

():改变执行顺序

!:非

n是一个变量,--n就是将这个变量的数值减去1,也就是n = n - 1,如:n-5,那么--n就等于4

!(感叹号)是非运算,就是not,这里是将括号内的值转化为Boolean型后取非。

刚才说了--n,n是一个数值,那么转化为boolean型后是什么?所有非0数值被转化为boolean型都是true,0转化后是false。

那么--n如果等于0,转化后就是false,再取反,就是true;如果--n非0,那么转化后是true,再取反就是false;那么--n在什么情况下会被转化为false呢?很明确,n等于1时。

总结以上几点,最终答案是:

如果n等于1,那么这句代码返回true

如果n不等于1,那么这句代码返回false