6

私のウェブページには次のコードがあります:

<html>
<head>
    <title>This is test Page</title>

     <script language="javascript" type="text/javascript">

         document.getElementById("msg1").innerHTML = document.URL.toString();
        </script>

</head>
<body>

    <div class="sss">
        <p id="msg1"></p>
    </div>


</body>
</html>

スクリプトが実行された時点で div は存在しませんが、JavaScript コードのみ<head>をタグに配置したいので、HTML コードの途中には配置しません。

しかし、このコードは、タグの<script>後に<div>タグを付けた場合にのみ機能します。私はVS2010とfirefox 19.0.1を使用しています

<head>コードをタグに入れる方法はありますか?

4

6 に答える 6

15

スクリプトは DOM の準備が整っていることに依存しているため、DOM の準備が整った後にのみその関数呼び出しを実行する必要があります。

<script language="javascript" type="text/javascript">

window.onload = function() {
    document.getElementById("msg1").innerHTML = document.URL.toString();
}

</script>
于 2013-03-28T06:48:08.503 に答える
4

スクリプトは DOM 要素を使用するため、DOM がロードされた後に実行する必要があります。この関数を使用してそれを行うことができます。

$(document).ready(function(){
    //code here
}
于 2013-12-04T08:38:46.800 に答える
2

The various tags in your HTML page are loaded and processed in the order in which they appear on the page. Your <script> tag is executed immediately when it is parsed in the <head>. This is before the <body> and the elements inside the <body> are parsed. So, the script tries to reference an element that is not defined at the time it is executed.

于 2013-03-28T06:44:19.620 に答える
2

Michael Geary の言うとおりです。あなたのコードを実行するには、jQuery ライブラリ (JS 開発のデファクト スタンダード) を使用し、DOM Ready イベントを利用します。これにより、DOM が完全に読み込まれると、ハンドラー内のコードが確実に実行されます。

<script>
  $(function(){
    $('#msg1').html(document.URL.toString());
  });
</script>
于 2013-03-28T06:47:52.643 に答える
1

次のように使用することをお勧めしますaddEventListener

<script language="javascript" type="text/javascript"> 
document.addEventListener("DOMContentLoaded",() => { 
       document.getElementById("msg1").innerHTML = document.URL.toString();
    });
</script>
于 2020-10-23T15:35:35.910 に答える
0

スクリプトは dom 要素を使用しており、dom が読み込まれた後に実行する必要があります。

コードを関数でラップし、dom がロードされた後に呼び出す

function myfunc(){  
//code here
}
window.onload = myfunc();
于 2013-03-28T06:47:02.560 に答える