element.style或window.getComputedStyle()不显示float

我试图将所有元素样式属性复制到另一个元素。 (内联和inheritance)这样做我使用window.getComputedStyle(),但是当我获取所有样式值时, float值不存在。 我甚至尝试使用element.style并且它不存在。

但是当我使用jQuery.css(’float’)时,我得到了正确的值,所以它确实存在!

你有任何解决方案或聪明的方法吗?

需要考虑的两件事: window.getComputedStyle()在IE <9( 此处为 docs window.getComputedStyle()不起作用。 此外,当通过element.style访问float值时,该属性被命名为cssFloat因为’float’是JS中的保留字( 此处为 docs)。 在IE <9中,该属性名为styleFloat

你的例子通过jQuery工作的原因是因为jQuery在读取计算出的样式时知道固有的浏览器差异,并对它们进行平滑处理,以便您可以通过一致的API访问它们。

element.style映射到style属性,该属性不考虑inheritance/外部样式。 对于旧的IE,您需要的属性是element.currentStyle ,它将inheritance的样式考虑在内。

如果你需要一个不依赖于jQuery的解决方案,你需要检查window.getComputedStyle()并使用它(如果存在),并回退到旧IE的element.currentStyle (使用属性styleFloat )。

希望有所帮助,欢呼!