2010-08-26 139 views
2

在我的html:javascript在页面加载时不执行?

<head> 
<link href="/prop-view.css" media="screen" rel="stylesheet" type="text/css"> 
     <script src="/javascripts/jquery-1.3.2.min.js" type="text/javascript"></script> 
     <script type="text/javascript"> 
      var $j = jQuery.noConflict(); 
     </script> 
     <script src="/prop-view.js" type="text/javascript"></script> 

在我的道具,view.js文件:

$j("<div class='dk-logo'></div>").appendTo("body"); 

的检查显示没有错误。但图像不显示。但是,当我将该行复制并粘贴到控制台时确实如此。所以...我的猜测是在文档完全加载之前,js文件正在运行?

回答

4

确保DOM被加载第一通过这样做:

$j(function() { 
    $j("<div class='dk-logo'></div>").appendTo("body"); 
}); 

这是jQuery的ready()功能的快捷方式。在<body>标签满载之前,不会执行内部代码。

由于您在代码之前<body>标签,没有<body>尚未追加。

+1

+1 for shortcut :) – Anpher 2010-08-26 14:12:20

3

你说得对。在DOM上执行您的代码。

$j(document).ready(function(){ 
    $j("<div class='dk-logo'></div>").appendTo("body"); 
}); 
1

执行prop-view.js时,主体尚不可用。 只需在主体标签的底部附加脚本标签即可。页面加载速度更快,脚本将按预期运行

<body> 
    ... 
    <script ...></script> 
</body>