0

如果 p 标签放在上面,脚本放在下面,下面的脚本工作得很好

<p id="dom_intro">Hello</p> 

<script>
x=document.getElementById("dom_intro");
document.write("<p>This is the text of dom intro" + x.innerHTML + "Howzzat </p>");
</script>

如果首先放置脚本并且将 html p 标记放置在脚本下方的相同代码不起作用,我会收到错误 x is null or undefined

<script>
x=document.getElementById("dom_intro");
document.write("<p>This is the text of dom intro" + x.innerHTML + "Howzzat </p>");
</script>

<p id="dom_intro">Hello</p> 

我尝试将脚本粘贴到外部 javascript 文件中并放在头部我得到同样的错误。html 渲染后是否有任何 javascript 或 jquery 脚本来加载 javascript 文件

4

4 回答 4

1

jQuery:

$(document).ready(){function(){
//yourcode

});

和 Javascript

window.onload=function(){
//your code

}

当 DOM 准备好时,jquery 中的文档准备就绪,即在一些图像下载之前执行该功能。

Window.onload 在页面完全准备好时触发,即所有图像都完成加载。

于 2012-12-28T10:22:43.660 回答
1

dom 准备好后,您需要访问该元素。您收到此错误是因为您尝试在加载 dom 之前访问 p 标签。

这可能会解决您的问题

window.onload = function(){ 
  // your javascript here
   x=document.getElementById("dom_intro");
   document.write("<p>This is the text of dom intro" + x.innerHTML + "Howzzat </p>");

}
于 2012-12-28T10:24:03.207 回答
0

浏览器正在渲染您的代码(线性)。这里的问题是您的脚本试图访问尚不存在的东西,因此通常的做法是等到所有 DOM 元素都准备好后再执行脚本。

请看这里:http ://api.jquery.com/ready/

$(document).ready(function() {
  // Handler for .ready() called.
});

这相当于调用:

$(function() {
 // Handler for .ready() called.
});
于 2012-12-28T10:28:32.190 回答
0

<script> 内容在您放置它的地方执行,因此在第二种情况下,您尝试在声明之前使用“dom_intro”。但是您试图在 html 呈现之后加载 javascript,所以您不想在 html 内容之前编写脚本,对吗?

加载 JS 文件的常用方法是在 </body> 关闭标记之前。这样,您将确保在加载所有 HTML 之前不会下载任何 html。

如果您想在执行任何 JS 之前等待 HTML 完成加载,您必须执行以下操作:

纯javascript:

window.onload = function () {
    // do_whatever_you_want
}

查询:

$(document).ready(function() {
    // do_whatever_you_want
}
于 2012-12-28T10:44:19.827 回答