2013-05-08 35 views
6

私はちょうどw3schoolからjavascriptを学び始めました。そして、 "あなたはHTML出力でdocument.writeしか使用できません。ドキュメントが読み込まれ、全体のドキュメントが上書きされます。なぜdocument.readyState === "complete"のJavaScriptが読み込まれない

<html> 
    <head> 
     <title>ashish javascript learning</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    </head> 
    <body> 
     <p> sample html with javascript </p> 
     <script> 
      document.write("<h1>this is heading</h1>"); 
      document.write("<p>this is sample para</p>"); 
     </script> 
     <script> 
      if(document.readyState === "complete"){ 
       loaded(); 
      } 
      function loaded(){ 
       document.write("<p>loading content after the document has been loaded"); 
      } 
     </script> 
    </body> 
</html> 

コードはまだ古い値を示しているし、ウェブページの内容を上書きしていない:私は妥当性を確認するには、次のコードを記述しようとしています。あなたは私に何が間違っているのかを教えてください。

+3

をなぜ 'document.write'を使用していますか? –

+4

@Ashish:信頼できるJavaScriptリソースの1つに、適切なリソースやガイドへのリンクがたくさんある[** JavaScript MDN **](https://developer.mozilla.org/ja/docs/JavaScript)があります。 – Nope

+1

基本的に、それぞれの 'document.write'呼び出しは初期ページ作成中にも起こります。 'if'部分は' false'と評価され、 'loaded()'は決して呼び出されません。 – devnull69

答えて

12

あなたがdocument.readyState === "complete"をテストしている時には、ドキュメントのreadyStateのは、「完了」、それが「ロード」ではないので、何も起こらない、とloadedが呼び出されることはありません。

あなたはreadyStateのを変更するために耳を傾け、そしてそれが「完了」(または簡単ですwindow.onloadに耳を傾ける)であるかどうかを確認するためにその後、チェックすることができます

document.onreadystatechange = function() { 
    if(document.readyState === "complete"){ 
    loaded(); 
    } 
} 
+0

私の文書がダウンロードするpdfをポップアップしている場合、ポップアップが開き、準備完了状態になりますが、ファイルはまだロードされていません。 – shareef

4

メカニズムは、イベントベースであるため。いったんDOMが実際にロードされると、これを使うべきではありません。無意味です。

評価は行われますが、評価時にdocument.readyState == "complete"falseなので、何も起こりません。

物事を行うための簡単な方法:あなたがする必要がどのような

window.onload = function() { 
    loaded(); 
}; 
3

readystate値のreadystatechangeイベントその後、チェックする機能をフックです。このような

document.onreadystatechange = function() { 
    if (document.readyState === 'complete') { 
     initApplication(); 
    } 
} 
0

書き込み、あなたは説明なしのため申し訳ありません

document.onreadystatechange = function(){ 
    if(document.readyState == 'complete'){ 
     document.write('document is overwrite') 
    } 
} 
+0

理由を説明できますか?説明のない答えを建設的ではないものにするだけで、なぜ質問の部分に答えないのですか – glls

0

を望む結果を得るでしょう。 javascript上でコードが実行されるとdomが完了しないので、ドキュメントのreadyStateは「完全」ではないため、initApplication関数は呼び出されません。 initApplication関数を呼び出す場合は、ドキュメントにトリガを追加する必要があります。 'document.onreadystatechange'のようなトリガを追加します。ドキュメントの状態が変更されたときに "document.onreadystatechange"が呼び出されます。 はその文書がロードされたとき、「document.onreadystatechangeは」

関連する問題