window.onload使用时遇到的问题_1
2016-11-22 17:38
127 查看
一个简单的创建节点插入节点的代码。
若把window.onload函数这样写,运行会出现错误。
错误代码:window.onload=function()
{
var para=document.createElement("p");
var txt1=document.createTextNode("This is");
para.appendChild(txt1);
(1)若js文件是从HTML文档的<head>部分用<script>标签被调用的,它将在HTML文档之 前加载到浏览器里。
(2)若<script>标签位于文档底部</body>之前,就不能保证那个文件先结束加载(浏览器可能一次加载多个).因为脚本加载时,文档可能不完整,模型也不完整。没有完整的DOM,createElement等方法就不能正常工作。
所以,必须让这些代码在HTML文档被加载到浏览器之后马上开始执行。
HTML文档全部加载完毕时将触发一个事件,这个事件有它自己的事件处理函数。
文档将被加载到一个浏览器窗口,document对象又是window对象的一个属性。当window对象触发onload事件时,document对象已经存在。
所以,可以将JS代码打包放在一个函数里,并把这个函数添加到window对象的onload事件上去就可以正常运行。
正确代码:
window.onload=prepare;
function prepare()
{
var para=document.createElement("p");
var txt1=document.createTextNode("This is");
para.appendChild(txt1);
var emphasis=document.createElement("em"); var txt2=document.createTextNode(" my "); emphasis.appendChild(txt2); para.appendChild(emphasis); var txt3=document.createTextNode("content. "); para.appendChild(txt3); var testdiv=document.getElementById("testdiv"); testdiv.appendChild(para); }
若把window.onload函数这样写,运行会出现错误。
错误代码:window.onload=function()
{
var para=document.createElement("p");
var txt1=document.createTextNode("This is");
para.appendChild(txt1);
var emphasis=document.createElement("em"); var txt2=document.createTextNode(" my "); emphasis.appendChild(txt2); para.appendChild(emphasis); var txt3=document.createTextNode("content. "); para.appendChild(txt3); var testdiv=document.getElementById("testdiv"); testdiv.appendChild(para); }第一句在 js文件被加载时立即执行。
(1)若js文件是从HTML文档的<head>部分用<script>标签被调用的,它将在HTML文档之 前加载到浏览器里。
(2)若<script>标签位于文档底部</body>之前,就不能保证那个文件先结束加载(浏览器可能一次加载多个).因为脚本加载时,文档可能不完整,模型也不完整。没有完整的DOM,createElement等方法就不能正常工作。
所以,必须让这些代码在HTML文档被加载到浏览器之后马上开始执行。
HTML文档全部加载完毕时将触发一个事件,这个事件有它自己的事件处理函数。
文档将被加载到一个浏览器窗口,document对象又是window对象的一个属性。当window对象触发onload事件时,document对象已经存在。
所以,可以将JS代码打包放在一个函数里,并把这个函数添加到window对象的onload事件上去就可以正常运行。
正确代码:
window.onload=prepare;
function prepare()
{
var para=document.createElement("p");
var txt1=document.createTextNode("This is");
para.appendChild(txt1);
var emphasis=document.createElement("em"); var txt2=document.createTextNode(" my "); emphasis.appendChild(txt2); para.appendChild(emphasis); var txt3=document.createTextNode("content. "); para.appendChild(txt3); var testdiv=document.getElementById("testdiv"); testdiv.appendChild(para); }
相关文章推荐
- 今天遇到的一个开发问题 window.onload冲突
- 使用SiftGPU遇到问题:freeglut ERROR: Function <glutDestroyWindow> called without first calling 'glutInit'.
- 使用window.open()方法时遇到的问题
- window.open使用中遇到的问题
- 使用window.opener遇到的问题
- 使用Data Access Application Block遇到的问题
- 在IIS 6 中使用HTTP压缩(Compression)遇到的一个问题
- 在nhibernate使用过程中遇到的几个问题。
- 在nhibernate使用过程中遇到的几个问题02
- 在MIDAS中使用SocketConnection遇到的问题
- 关于您提到使用WebServices时候遇到“基础连接以关闭”的问题
- 求解在SQL中使用了where列所遇到的问题
- 遇到 Web Server 中不能使用 XmlSerializer 的问题
- 在win2003server上使用移动硬盘时遇到的问题以及禁用“关闭事件跟踪程序”
- updater application block v2.0的使用过程中遇到的问题及解决办法
- 使用css expression遇到的一个问题
- 使用Access存储Session,遇到了SessionId问题?
- 在使用BizTalk时遇到一个很郁闷的问题 之解决篇
- 使用SqlParameter参数返回值时遇到的问题
- 使用vs.net遇到的问题