0

以下のスクリプトは、pタグが上に配置され、スクリプトが下に配置されている場合、完全に正常に機能します。

<p id="dom_intro">Hello</p> 

<script>
x=document.getElementById("dom_intro");
document.write("<p>This is the text of dom intro" + x.innerHTML + "Howzzat </p>");
</script>

スクリプトが最初に配置され、html pタグがスクリプトの下に配置されているのと同じコードが機能しない場合、エラーxがnullまたは未定義になります。

<script>
x=document.getElementById("dom_intro");
document.write("<p>This is the text of dom intro" + x.innerHTML + "Howzzat </p>");
</script>

<p id="dom_intro">Hello</p> 

スクリプトを外部のjavascriptファイルに貼り付けて、ヘッドセクションに配置しようとすると、同じエラーが発生します。HTMLがレンダリングされた後にjavascriptファイルをロードするためのjavascriptまたはjqueryスクリプトはありますか

4

4 に答える 4

1

domの準備ができたら、要素にアクセスする必要があります。domがロードされる前にpタグにアクセスしようとしたため、このエラーが発生します。

これで問題が解決する場合があります

window.onload = function(){ 
  // your javascript here
   x=document.getElementById("dom_intro");
   document.write("<p>This is the text of dom intro" + x.innerHTML + "Howzzat </p>");

}
于 2012-12-28T10:24:03.207 に答える
1

jquery:

$(document).ready(){function(){
//yourcode

});

そしてJavascript

window.onload=function(){
//your code

}

jquery で準備されたドキュメントは、DOM の準備が整ったときに関数を実行します。つまり、いくつかの画像がダウンロードされる前です。

Window.onload は、ページの準備が完全に整ったとき、つまりすべての画像の読み込みが完了したときに発生します。

于 2012-12-28T10:22:43.660 に答える
0

ブラウザは、コードを表示どおりにレンダリングします(線形)。ここでの問題は、スクリプトがまだ存在しないものにアクセスしようとすることです。そのため、すべてのDOM要素の準備ができるまで待ってから、スクリプトを実行するのが一般的な方法です。

こちらをご覧ください:http://api.jquery.com/ready/

$(document).ready(function() {
  // Handler for .ready() called.
});

これは、呼び出すことと同じです。

$(function() {
 // Handler for .ready() called.
});
于 2012-12-28T10:28:32.190 に答える
0

<script> コンテンツは配置した場所で実行されるため、2 番目のケースでは、宣言する前に「dom_intro」を使用しようとしています。しかし、HTML がレンダリングされた後に JavaScript を読み込もうとしているのですから、HTML コンテンツの前にスクリプトを書きたくないでしょう?

JS ファイルをロードする通常の方法は、</body> 終了タグの直前です。そうすれば、すべての HTML が読み込まれる前に、HTML がダウンロードされないようにすることができます。

また、JS を実行する前に HTML の読み込みが完了するまで待ちたい場合は、次のようにする必要があります。

プレーンな JavaScript:

window.onload = function () {
    // do_whatever_you_want
}

Jクエリ:

$(document).ready(function() {
    // do_whatever_you_want
}
于 2012-12-28T10:44:19.827 に答える