1

ここでデモをセットアップしました: http://jsbin.com/evifeb/

これは、適切な質問というよりも、大声で考えている私のことですが..

ブラウザーがメソッドや予約語と一緒に計算済みスタイル オブジェクトにスタイル ルールを直接挿入するのはなぜですか? 解析が難しくなるだけです。たとえば、私のデモでは、文字列と数値以外のすべてを除外していることに気付くかもしれません。これは、同じスコープ内にある関数を除外するためです。ただし、長さプロパティの値は数値であるため、これは 100% 正確ではありません。スタイルのオブジェクトを無意味に返す「getAllStyles」のようなプロトタイプ関数を使用しないのはなぜですか?

OKAY「getPropertyValue」は知っていますが、それは指定されたスタイルルールが必要な場合にのみ役立ちます..だから私が言おうとしているのは次のとおりだと思います: A) 交差しているオブジェクトを返す適切な方法はありますか?ブラウザセーフ?B)そうでない場合、長さ以外に取り除く必要のある他のプロパティ(css仕様にない)はありますか?

助けてくれてありがとう。歯を抜く準備が整いました。

4

1 に答える 1

6

あなたのforループには健全な量の が必要なようですObject.hasOwnProperty

hasOwnProperty()フィルタ使用すると、概して問題は解決しますが、原因ではなく症状が修正されます。原因は、コードがループを使用してfor...in配列を反復処理することです。これをしないでください。

for...inオブジェクトを反復処理するために使用しfor、配列を反復処理するために使用します。


最後にもう 1 つ:getComputedStyle()の (読み取り専用) インスタンスを返しますCSSStyleDeclaration。提供された API を使用すると、物事は簡単です。

for (var i=0; i<computedStyles.length; i++)
{        
    cssProperty = computedStyles[i];
    cssValue = computedStyles.getPropertyValue(cssProperty);
    // snip...
}

デモ: http://jsbin.com/owenij/2

于 2011-10-14T20:06:04.833 に答える