javascript - 如何解释这段代码?
伊谢尔伦
伊谢尔伦 2017-04-11 11:21:26
[JavaScript讨论组]

对下述结构代码,文档中只有<script>和<html>,会提示appendChild未定义,但是加上window.onload = function().....就可以正常执行,
如何解释?
谢谢

<script>

var tester = document.createElement('p');
tester.style.display = 'inline-block';
tester.style.fontSize = '30px';
tester.innerHTML = 'Segment';
document.body.appendChild(tester);
console.log(tester.offsetWidth)  // 120

</script>
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(3)
大家讲道理

说明原先这段代码等同于写在了head里喽,代码执行的时候,document.body还不存在。

写在window.onload里能用,现在好理解了吧?因为onload之后,document.body就有了

怪我咯
  • 很简单啊,js是边读边执行的,也就是说,如果你写这段代码的时候,浏览器还读不到body这个标签,那么他就会找不到document.body,自然document.body是个undifend,自然不存在一个叫appendchild的方法。

  • window.onload是整个html读完所有资源全部加加载完之后才开始执行上述代码,这时候浏览器已经读到了body标签了,document.body存在,自然带有dom方法appendchild

  • 如果你不想使用window.onload,可以将这段代码放在body标签里面

天蓬老师

onload就是一个加载完成,按照你的说法,你应该是<script>写在<body>的上面了,页面开始加载,加载到<script>发现你命名的变量tester命名了,但是不知道是什么东西来的,因为这个时候还没读取到<body>里面的p,所以会显示未定义。你加上onload,说明页面完成再加载这段代码,所以不会出现问题。你也可以把<script>放到最下面,</body>上面的位置,这样你不用onload也没问题。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号