我在这里设置了一个演示: http://jsbin.com/evifeb/
这更像是我在想大声而不是一个正确的问题,但是......
为什么浏览器会将样式规则直接插入到计算样式对象中的旁边方法和保留字?这只是难以解析..例如,您可能会在我的演示中注意到我正在过滤掉除字符串和数字之外的所有内容..这是为了清除同一范围内的函数。虽然,这不是100%准确,因为长度属性值是一个数字。为什么没有像“getAllStyles”这样的原型函数返回没有废话的样式对象?
OKAY所以我知道“getPropertyValue”,但这只有在您需要指定的样式规则时才有用。所以我想我想说的是:A)是否有正确的方法返回这样的对象这是跨浏览器安全吗?和B)如果没有,除了长度需要除草之外还有其他属性(不在css规范中)吗?
非常感谢你的帮助。我已经准备好拔牙了。
答案 0 :(得分:6)
听起来你的 for
循环需要健康剂量Object.hasOwnProperty
。
使用hasOwnProperty()
过滤器 大体上会解决问题,但它会解决症状,而不是原因。 原因是您的代码使用for...in
循环来迭代数组。 Don't do this.
使用for...in
迭代对象,并使用for
迭代数组。
最后一件事:getComputedStyle()
返回CSSStyleDeclaration
的(只读)实例。使用提供的API,事情很简单:
for (var i=0; i<computedStyles.length; i++)
{
cssProperty = computedStyles[i];
cssValue = computedStyles.getPropertyValue(cssProperty);
// snip...
}