1. 程式人生 > >js中如何獲取元素樣式

js中如何獲取元素樣式

週末寫了個原生的animation元件,其中使用原生的document.getElementByIdx_x_x('...').style來獲取元素的相關樣式值,但是奇怪的是獲取不到相應的值: <style> body{margin:0 auto;text-align:center;} div{position:relative;left:10px;} </style> <div id="pic1"> <img src="http://pic1.xihuan.me/edr/196__/t02362982432fa1b14e.jpg"> </div> <script> var dom1 = document.getElementByIdx_x('pic1'); console.log(dom1.style.left); </script> 控制檯中顯示為空。 
查詢了相關資料發現問題如下: style只能獲取元素的內聯樣式
,內部樣式和外部樣式使用style是獲取不到的。 currentStyle可以彌補style的不足,但是只適用於IEgetComputedStyle同currentStyle作用相同,但是適用於FF、opera、safari、chrome。 寫了個getStyle的自定義函式,來相容ie和其他瀏覽器,使用getStyle來獲取頁面中元素的樣式,問題解決。 getElementStyle: function(el,attr){ //獲取el當前的attr樣式,解決ie問題 return el.currentStyle?el.currentStyle[attr]:getComputedStyle(el,null)[attr]; } 獲取後返回10px。 注意: currentStyle和getComputedStyle只能用於獲取頁面元素的樣式,不能用來設定相關值。 如果要設定相應值,應使用style