2013-03-28 109 views
2

我的网页上有以下代码:JavaScript代码在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> 

正如你现在在脚本执行股利不存在,但当时我只想把我的JavaScript代码<head>标签,我不会把它放在HTML代码的中间。

但是这个代码只有当我把<script>标签放在<div>标签后面时才起作用。 我用VS2010和firefox 19.0.1

反正有代码放在<head>的标签吗?

+2

该点不存在任何元素。 – elclanrs 2013-03-28 06:44:00

+1

身体在头后加载。因此,你的头脑中的脚本无法找到你体内的元素。将您的脚本标签放在您的主体的末尾或等待正文上的onload事件执行代码。 – 2013-03-28 06:44:44

+0

正是。脚本执行div的时间不存在。尝试耦合一种机制,例如在悬停div元素时调用脚本,或者可以是明确指出“获取URL”的按钮。您可以维护订单或在特定事件中调用您的脚本。 – asgs 2013-03-28 06:45:51

回答

9

你的脚本依赖于DOM准备好,所以你需要执行该函数调用后,才DOM已准备就绪。

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

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

</script> 
1

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

+0

我知道,但我想把所有的JavaScript代码放在HEAD标记 – AminM 2013-03-28 07:01:05

1

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

包装你的代码中的函数,调用它的DOM加载

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

迈克尔·基尔是正确后,为了执行你的代码,我会使用jQuery库(在JS开发一个事实上的标准)并利用DOM就绪事件。这将确保处理器中的代码在DOM完全加载后执行。

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

tnx为jQuery,但我想用JavaScript本身...不是第三方库.. ..但如果有一次我想在我的页面中使用jQuery,我当然使用你的代码! – AminM 2013-03-28 06:59:54

5

您的脚本使用DOM元素,并且必须在DOM加载后运行。 您还可以使用此功能:$(document).ready(function(){ //code here }