javascript - getComputedStyle 对象包含方法?

标签 javascript object methods properties computed-style

我在这里设置了一个演示: http://jsbin.com/evifeb/

这更像是我在大声思考,而不是一个适当的问题,但是..

为什么浏览器将样式规则与辅助方法和保留字一起直接插入到计算样式对象中?它只会让解析变得困难。例如,您可能会注意到在我的演示中我过滤掉了除字符串和数字之外的所有内容。这是为了清除同一范围内的函数。虽然这不是 100% 准确,因为 length 属性值是一个数字。为什么不使用像“getAllStyles”这样的原型(prototype)函数来返回样式对象而不是废话呢?

好吧,所以我知道“getPropertyValue”,但只有当你想要一个指定的样式规则时它才有用。所以我想我想说的是:A)是否有返回这样一个对象的正确方法那是跨浏览器安全的吗?和 B) 如果不是,除了长度之外是否还有其他属性(不在 css 规范中)需要剔除?

非常感谢您的帮助。我准备拔牙了。

最佳答案

听起来您的 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...
}

演示:http://jsbin.com/owenij/2

关于javascript - getComputedStyle 对象包含方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7772956/

相关文章:

javascript - 使用 P5 javascript 从图像生成调色板

数组的Javascript索引是数组

javascript - Javascript 中的 XML DOM 与对象

swift - Swift 中的属性闭包和方法有什么区别?

java - 将匹配 Java 方法声明的正则表达式

javascript - 允许在 ng-pattern 正则表达式中使用正斜杠。

javascript - JS检查对象数组是否包含对象

java - 如何使用对象作为类的变量,如ArrayList?

c# - 确定在 C# 中定义函数的位置?

javascript - Canvas 绘图在 Safari 上花费大量时间,但在 Chrome 或 FF 上则不会