2011-06-03 42 views
8

我想接收使用JavaScript的對象的原始CSS寬度值。但是,如果我使用:js樣式屬性返回空白

var originalWidth = document.getElementById(<idOfObject>).style.width; 

它總是返回空白。我也注意到,我使用這個語法訪問的任何屬性都將返回空白。我知道這個給定的元素存在,因爲

alert(document.getElementById(<idOfObject>)); 

確實顯示我是正確的對象。

任何人都可以幫助我解決這個問題嗎?

回答

8

你可能嘗試得到這是在樣式表設置,不能直接這樣值:

document.getElementById(<idOfObject>).style.width = '100px'; 

如果你想要得到的寬度您可以使用innerWidth屬性的元素:

var width = document.getElementById(<idOfObject>).offsetWidth; 
+0

innerWidth or offsetWidth?除此之外,我還會補充一點,您可以訪問內聯樣式屬性,如下所示:

...
marcosfromero 2011-06-03 18:06:33

+0

我只是想出了自己,你是對的!感謝你的回答! – Tiddo 2011-06-03 18:08:12

+0

都不是,正確的是clientWidth; offsetWidth返回寬度加邊框寬度。如果屬性寬度由外部CSS或甚至樣式設置 – drodsou 2012-07-26 17:16:45

0

我相信這會工作

function getWidth() 
{ 

x = document.getElementById(<idOfObject>) 
return x.offsetWidth; 
} 
1
<div style="width:10%" id="mydiv" > 

OR

<div style="width:10px" id="mydiv" > 

var mydiv = document.getElementById("mydiv"); 
var curr_width = mydiv.style.width; 
alert(curr_width); 

這對我的作品

9

以前的答案都不正確。

你正在尋找的屬性是clientWidth,而不是在「樣式」

document.getElementById('idOfObject').clientWidth; 

,將工作無論在「寬度」設置與外部CSS,風格seccion甚至內嵌樣式=「WIDTH :80px」

通用注:請不要使用<div width="500">,因爲它沒有任何效果

所提到的offsetWidth是第二個最好的選擇,但它不返回準確WID th設置在CSS中,但該寬度加上邊框寬度

其他選項,如innerWidth,與窗口對象一起使用,在div上不起作用。

這個奇怪的問題實現style.width不能正常工作,浪費了我寶貴時間的2個小時:-),希望這個答案能夠縮短那個時間給其他任何人。