0

ドキュメントフラグメントを作成してスタイルを設定しようとしていますが、かなりの困難があります。皮肉なことに、IE は私の問題ではありません。

私はこれを持っています:

var newDom = document.createDocumentFragment();

newDom.appendChild(document.createElement("style"));
newDom.appendChild(document.createElement("div"));

if (newDom.childNodes[0].styleSheet){
    newDom.childNodes[0].styleSheet.cssText = "div{color:red;}";
    alert(newDom.childNodes[1].currentStyle.color);
}else{
    newDom.childNodes[0].appendChild(document.createTextNode("div{color:red;}"));
    alert(window.getComputedStyle(newDom.childNodes[1], null).color);
};

...これは、IE7/8/9 では「赤」を警告しますが、FF3.0/4/10 では「rgb(0,0,0)」を警告します。そして、はい、どのスタイルが適用されているかを知る必要があるため、FF の getComputedStyle から読み取る必要があります (または、信頼できる限り、他の方法を使用します)。

私は何を間違っていますか?これは可能ですか?(私はそう思う/そう願っています...)

IEには存在するがFFには存在しない「newDom.styleSheets」など、多くのことを試しましたが、役に立ちませんでした。

助けてください - ありがとう!:D

4

1 に答える 1

2

Web で読むと、Javascript を使用して CSS を変更する正しい構文は次のようです。

obj.style.cssText = 'something';

とにかく、これは問題を解決していないようです。http://www.phpied.com/the-new-game-show-will-it-reflow/の記事を読むことをお勧めします。

また、アプローチを変更して、CSS コードを既存の CSS スタイルシートに配置し、 のようなクラスに関連付けてから、クラス.red-colorだけを新しく作成した div にsetAttribute('class', 'red-color'). 別の方法として、スタイルをインラインで設定し、常に同じ関数を使用することもできます: setAttribute('style', 'color: red').

于 2012-02-03T20:07:46.237 に答える