javascript代码在HEAD标记中不起作用

时间:2013-03-28 06:41:29

标签: javascript html head

我的网页包含以下代码:

<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>代码?

6 个答案:

答案 0 :(得分:12)

您的脚本依赖于DOM准备就绪,因此您只需在DOM准备就绪后才能执行该函数调用。

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

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

</script>

答案 1 :(得分:5)

您的脚本使用DOM元素,因此必须在加载DOM后运行。 您可以使用此功能执行此操作:

$(document).ready(function(){
    //code here
}

答案 2 :(得分:2)

Michael Geary是对的,为了执行你的代码,我使用jQuery库(JS开发中的事实标准)并利用DOM ready事件。这将确保一旦DOM完全加载,处理程序中的代码就会执行。

<script>
  $(function(){
    $('#msg1').html(document.URL.toString());
  });
</script>

答案 3 :(得分:1)

HTML页面中的各种标签按照它们在页面上显示的顺序加载和处理。在<script>中解析时,会立即执行<head>标记。这在<body>之前,并解析<body>内的元素。因此,脚本会尝试引用在执行时未定义的元素。

答案 4 :(得分:1)

您的脚本使用dom元素,必须在加载dom后运行。

将代码包装在函数中并在加载dom后调用它

function myfunc(){  
//code here
}
window.onload = myfunc();

答案 5 :(得分:0)

我建议像这样使用addEventListener

<script language="javascript" type="text/javascript"> 
document.addEventListener("DOMContentLoaded",() => { 
       document.getElementById("msg1").innerHTML = document.URL.toString();
    });
</script>