分配DOM风格VAR

问题描述:

出于某种原因,如果我输入:分配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

当我在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