2017-04-19 10 views
-2

私はこのWeb HTMLインタープリタがスクリプトタグの下のコードを読み込むと、

<head> 
    ... load jQuery .... 
    <script>var bbody = $('body');</script> 
</head> 
<body> 
    .... 

    <script>console.log(bbody);</script> 
    <script>console.log($('body'));</script> 
</body> 

、常に最初の文ではconsole.logの結果のように、それはundefinedページの先頭に挿入されたスクリプトをだしているが、2番目はそれが正しいオブジェクトだ、だから私の質問です:

  1. ¿常に<script>のコードは、インタプリタ上でコードを読み取った時点で実行されますか?
+1

b/cその時点でのボディは入手できませんでした。 – Jai

+0

はい、同期しています( 'defer' /' async'でjsファイルをロードしない限り) - ブラウザはコンテンツをレンダリングし、スクリプトを読み込みます。 'defer'を使うとスクリプトが実行されると信じることができます同じ注文) –

+0

@AndreiGheorghiu何かこの基本的な...あなたはそれが何度も何度も尋ねられなければならないことを知っている – charlietfl

答えて

2

階層的です。最初の<script>タグについては、<body>はまだ表示されていません。だから、undefined

を使用して、を定義して、domが最初に読み込まれるようにすることができます。

$(document).ready(function(){ 
    var bbody = $('body'); 
}); 
1

あなたはそれをロードする際にbodyタグが存在することを確認するために$(document).readyでごvar bbody = $('body');を包みます。

$(document).ready(function(){ 
    var bbody = $('body'); 
}); 
関連する問題