2011-09-02 44 views
0

出於某種原因,如果我輸入:分配DOM風格VAR

var i = document.getElementById('fake').style.backgroundPosition; 

我得到了一個未定義。

然而,

document.getElementById('fake').style.backgroundPosition; 

本身,返回正確的答案。

任何想法?

+0

我假設你輸入到這個終端(「...如果我輸入...」)?你在實際的代碼中嘗試過嗎? – Bojangles

+0

你在哪裏放'document.getElementById('fake')。style.backgroundPosition;'?如果你不把它分配給任何東西,它如何「給你正確的答案」。它不能是一個真正的JavaScript代碼行。另外,如果你不告訴我們你把它放在哪裏,我們怎麼可能回答爲什麼第二個「給你正確的答案」? – jfriend00

+0

投票結束,因爲這個問題不清楚,而且OP也沒有回答要求他們澄清的問題。 – jfriend00

回答

5

當我在Chrome中實際存在的元素上使用該行代碼時,我得到的結果是i等於一個空字符串。你可以在這裏看到這個jsFiddle:http://jsfiddle.net/jfriend00/b6syd/

所以,如果你沒有定義,那麼當你運行代碼時,你的對象可能不存在「假」。

element.style.backgroundPosition只會返回給您一個直接爲該特定對象設置的實際內聯樣式設置或以編程方式設置的值。它不會從樣式表返回計算樣式。如果您想獲得該屬性的當前樣式設置,那麼你需要使用這樣的事情:

var i = window.getComputedStyle(document.getElementById('fake'), null).getPropertyValue('background-position'); 

而且,它在IE瀏覽器不同。這就是像jQuery或YUI這樣的框架非常有用的地方。

在jQuery中,這純粹是這樣的:

var i = $("#fake").css('backgroundPosition'); 
+0

這不回答問題。 – ShankarSangoli

+0

@ShankarSangoli - 這取決於OP是否真的想要做的是獲得backgroundPosition的computedStyle值(它們不包括在他們的問題中)。這並不能解釋爲什麼上述兩個值是不同的,但它可能會解釋爲什麼有一行javascript會爲我分配一個正確的值,這最終是他們可能需要的值。 – jfriend00

+0

你的答案毫無疑問有一個很好的解釋'computedStyle',但是OP正在尋找他爲什麼在將它設置爲變量時得到'undefined'的原因,而不是當他直接使用它時。 – ShankarSangoli