js获取元素样式属性值 - 较为灵活的函数
1.获取指定元素的样式属性值,兼容IE与其他标准DOM
1 //parameter:el具体元素、name样式属性名("width"、"background")
2 //return:el元素的样式属性name的值
3 function getStyle(el,name){
4 if(el.style[name]){
5 return el.style[name];
6 }
7 else if(e.currentStyle){
8 return el.currentStyle[name];
9 }
10 else if(document.defaultView && document.defaultView.getComputedStyle){
11 name = name.replace(/[A-Z]/g,"-$1").toLowerCase();
12 var attrObj = document.defaultView.getComputedStyle(el,null);
13 if(attrObj)
14 return attrObj.getPropertyValue(name);
15 }
16 else
17 return null;
18 }
2.出现width/height的值为百分比或者auto时必备的函数,可以灵活的计算出我们想要的值。以宽带width为例:
1 //parameter:el要计算的元素对象、wValue通过上面getStyle()获得的属性值、per元素百分比属性值转为小数后的值(50%==0.5,初始调用时,省略该参数)
2 //return:el元素的具体属性值
3 function getStyleX(el,wValue,per){
4 var p = arguments[2];
5 if(!p) p = 1;
6 if(/px/.test(wValue) && parseInt(wValue))
7 return parseInt(parseInt(wValue)*p);
8 else if(/\%/.test(wValue) && parseInt(wValue)){
9 var b = parseInt(wValue)/100;
10 if((p != 1) && p)
11 b *= p;
12 el = el.parentNode;
13 if(el.tagName == "BODY")
14 throw new Error("Calculation failure!");
15 wValue = getStyle(el,"width");
16 return arguments.callee(el,wValue,b);
17 }
18 else if(/auto/.test(wValue)){
19 var b = 1;
20 if((p != 1) && p)
21 b *= p;
22 el = el.parentNode;
23 if(el.tagName == "BODY")
24 throw new Error("Calculation failure!");
25 wValue = getStyle(el,"width");
26 return arguments.callee(el,wValue,b);
27 }
28 else
29 throw new Error("Error parameters!")
30 }