繁体   English   中英

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

[英]javascript code not work in HEAD tag

我的网页有以下代码:

<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>标签中?

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

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

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

</script>

您的脚本使用 DOM 元素,因此必须在加载 DOM 后运行。 你可以使用这个函数来做到这一点:

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

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

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

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

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

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

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

我建议像这样使用addEventListener

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM