document.write作用

5 篇文章 0 订阅
<html>
<head>
    <title></title>
    <script language="javascript" type="text/javascript">
        var div=document.createElement("div");
        div.innerHTML="被添加的div";
        //document.body.appendChild(div);//报错
        
        document.write("<span></span>");  //添加这行,
        document.body.appendChild(div);// 成功.
        

        /*
        document.write(" ");         
        document.body.appendChild(div);//I失败
        */
        /*
        document.write(" ");              
        document.body.appendChild(div);//失败.
        */
        
        
    </script>
</head>
<body></body>
</html>

成功和失败的时候chrome的表现:




document是引擎开始解析代码前就初始化,放到作用域,推到作用域链的末端,不过这时作用域链是空的,所以document是处于顶端,也就是我们所说的全局变量
初始化工作类似 var document = new Document();
而Document是拥有body,getElementById,getElementsByName,write等方法的类
所以document就拥有了Document的原型方法与其成员变量,但getElementById这些是基于body已经加载完成才能使用,这就是为什么当页面没加载完成时,我们使用不了getElementById的原因,而write并不需要,所以我们可以在页面还没加载完之前调用document.write方法
并且我们也知道write方法作用指的是当前文档对象输出
其实调用document.write方法的同时,会调用open与close的方法,具体会这么实现
document.open();
document.write();
document.close();
当open的时候将会打开一个文档流来输入内容,当文档已存在的时候,则先清空
write就是写入内容,close就是关闭文档流了
而上面的例子,当第一次使用document.write的时候,文档还没存在,所以它不会清空,而会将内容是直接附加到文档流中,当有内容附加在文档流后,body自然就会创建了,大家可以用firebug断点就清晰看到第一次document.write之前body为null,当document.write之后,body就为“body”了,同时如果是空格或其他元素,就不会创建body,所以就解析了楼主为什么document.write之后能使用document.body.appendChild
但同时提醒大家,非必要情况请不要使用document.write,因为当window.onload的时候,会将文档清空的


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值