2011-08-13 28 views
1

我跳過答案很簡單,但我發誓我浪費了這個時間。使用parseInt得到一個div元素屬性總是返回NAN

我想改變一個div元素使用普通ol'javascript的位置。首先,我需要元素的初始頂部和左側屬性值作爲整數。我試圖使用parseInt(element.style.top,10)

我遇到的問題是初始(默認)element.style.top和左值始終返回NaN。如果我在嘗試解析值之前指定了頂部和左側值,它可以正常工作......我希望能夠處理尚未指定值的情況...

請幫忙

+0

請顯示一些代碼。 – yoda

+0

這些CSS值通常不是簡單的數字 - 它們都有(明確的或隱含的)類型(em,像素,%等)。 – Oded

+0

我相信parseInt()返回一個字符前面的數字...所以parseInt(100px)會返回100.不是嗎? – SharpBarb

回答

2

由於CSS屬性值爲「auto」,因此值可能會出現「NaN」。這在IE中發生了很多。

+0

目前在FF4中嘗試了這一點。我試過打印出element.style.top的初始值(不解析值和使用something.innerhtml),初始值完全是空白的。 – SharpBarb

+0

那麼,一個空字符串也是「不是數字」。你可以嘗試使用'~~ element.style.top',它將空字符串和'null'轉換爲零(數字)。 – Pointy

1

element.offsetTopelement.offsetLeft返回整數(不需要解析),你試過嗎? element.style.top可以是許多東西,如auto,3em,20%。在autoparseInt的情況下返回NaN,在其他情況下它可能會返回一個數字,但不是您需要的數字。

+0

偏移量函數返回的值不同於style.top或style.left,我想一個會考慮邊界和邊距,另一個不是 – SharpBarb

+0

@SharpBarb http://www.quirksmode.org/js/findpos.html可以進一步幫助你? – KooiInc

0

您正在查詢樣式屬性(例如CSS設置)。但是,您需要元素的實際位置。看看如何用Javascript做到這一點here