2017-03-21 3 views
-3

私はこの問題を理解している問題があります。実際、HTMLを生成するためにjavascriptが適用されている場合、どのDOM(ドキュメントオブジェクトモデル)がCSSを使ってスタイルを適用するのか分かりません。上記のコードのjavascriptを追加する前に動作が期待されます。しかし、javascriptが追加されると、これは "hi"が赤に変わり、 "hii"が黄色に変わるという奇妙な振る舞いをします。実際には、私はcssスタイルシートが関数d()が本体で実行される前に適用されているので、CSSがjavascriptにhtml 'hi'を生成するためにスタイリングを適用できる理由を理解できません。 「hi」は赤、「hii」は黄色に変わるのはなぜですか?私は、ブラウザが上から下に向かってコードを実行したと思った。誰もこれを説明してもらえますか?どうもありがとうございました。HTMLでjavascriptを使用しているときに、どのDOMがCSSに従ってスタイルを適用しますか?

h2:first-child { 
 
    color: green; 
 
} 
 

 
h2:nth-child(2) { 
 
    color: red; 
 
} 
 

 
h2:nth-child(3) { 
 
    color: yellow; 
 
}
<script type="text/javascript"> 
 
    d(); 
 
    function d() { 
 
    document.write("<h2>hi</h2>"); 
 
    } 
 
</script> 
 
<h2>hii</h2> 
 
<h2>hiii</h2> 
 
<h2>hiiii</h2>

+0

*彼らはページの単一のPNGショットを作成した場合と同様*「私はブラウザは一度だけのコードを実行すると思いましたか」?それは彼らがしていることではありません。 DOMを変更するたびに、すべての要素をリフローして再描画します。 – Kaiido

+0

もしそうなら、jsはhtmlを生成するのになぜ赤ではなく緑ではないのでしょうか? –

+0

あなたの最初の 'h2'が':first-child'疑似セレクタと一致しないためです。 「

関連する問題