吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1183|回复: 5
收起左侧

[讨论] 学习JS时遇到的问题

[复制链接]
Oceanus 发表于 2020-2-22 13:55
新人第一次发帖,记录一下学习过程中的问题;学习JS时今天遇到一个有意思的问题,先附代码:
[JavaScript] 纯文本查看 复制代码
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
<script type="text/javascript">
  var int=setInterval(clock, 100);
  function clock(){
    var time=new Date();
    document.getElementById("clock").value = time;
  }
</script>
</head>
<body>
  <form>
    <input type="text" id="clock" size="50"  />
  </form>
</body>
</html>

是一个计时器的简单应用,当我把计时器setInterval(clock, 100)取消,改成直接调用clock()函数时,提示报错:Cannot set property 'value' of null,但是使用计时器却显示正常,最后去网上找了很多相关问题,最后发现报错是因为dom还没有完全加载完成原因
在HTML body部分中的JavaScripts会在页面加载的时候被执行。
在HTML head部分中的JavaScripts会在被调用的时候才执行。
浏览器解析html是从上到下的。

也找到了网上所说的两种解决办法:
1、按照HTML的解析顺序,可以把JS代码放在放在<body></body>标签之后;
2、绑定一个监听,当全部的html文档解析完之后,再执行代码:
通过windows.onload=function(){
//代码内容
}
总结一下报错的原因:
出现这个错误的原因是因为 JS代码放在head里的话,则先被解析,但这时候body还没有解析,所以会返回空值。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

可爱的男孩子 发表于 2020-2-22 14:53
真是啥东西都发论坛了
这就跟1+1为啥等于2一样
AlexBruce 发表于 2020-2-22 15:00
这种内容其实发blog更好,建议注册个csdn或者博客园,简书之类的,遇到问题,怎么解决的,可以发布上去,以后复习知识点时也好整理。
这毕竟是个论坛,是用来交流的,这种内容也真的没啥好交流的。
斯文的败类 发表于 2020-2-22 15:08
这个版块本来就是 编程语言讨论求助区,楼主发这里有什么问题吗 我感觉没什么问题。
zx2000 发表于 2020-2-23 10:52
我也觉得没什么问题,毕竟自己也踩过坑
liuyang581 发表于 2020-3-4 08:48
建议 找本 javascript DOM 编程艺术看看,里面也许有你需要的东西
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 20:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表