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 }