首页 > 为什么在这段代码在console下执行不报错,但在网页中就执行失败?

为什么在这段代码在console下执行不报错,但在网页中就执行失败?

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>DOM方法</title>
    <link rel="stylesheet" href="">
    <script>
        var ele = document.createElement('div');
        var txt = document.createTextNode('textContent');
        ele.appendChild(txt);
        document.getElementsByTagName('body')[0].appendChild(ele); //console中运行没有问题,执行这段语句的时候就报错
    </script>
</head>
<body>

</body>
</html>

报错是出在 document.getElementsByTagName('body')[0]appendChild(ele)这句话,
显示错误:Uncaught TypeError: Cannot read property 'appendChild' of undefined

新手,找了半天不知到错在哪了,求解答。谢谢各位 !


执行这段代码时,dom还没加载完,body元素不存在,肯定报错啊


是页面解析顺序的原因,head先解析,执行到js代码时body还没创建,所以找不到,提示undefined。把那段代码放到body里就行了。


如楼上所说,解决方法有:

  1. <script> 整块放到 </body> 之前

  2. <script> 内容更换为 window.onload = function() { /* 你写的代码 */ };

  3. 类似 jQuery/Zepto 绑定 DOMContentLoaded 事件,在事件里写要处理的代码 (注:某些浏览器不支持该事件)


在执行的时候,DOM树还没加载完

【热门文章】
【热门文章】