<!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里就行了。
如楼上所说,解决方法有:
将
<script>
整块放到</body>
之前将
<script>
内容更换为window.onload = function() { /* 你写的代码 */ };
类似
jQuery/Zepto
绑定DOMContentLoaded
事件,在事件里写要处理的代码 (注:某些浏览器不支持该事件)
在执行的时候,DOM树还没加载完