学习JS时遇到的问题
新人第一次发帖,记录一下学习过程中的问题;学习JS时今天遇到一个有意思的问题,先附代码:<!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还没有解析,所以会返回空值。 真是啥东西都发论坛了
这就跟1+1为啥等于2一样
这种内容其实发blog更好,建议注册个csdn或者博客园,简书之类的,遇到问题,怎么解决的,可以发布上去,以后复习知识点时也好整理。
这毕竟是个论坛,是用来交流的,这种内容也真的没啥好交流的。
这个版块本来就是 编程语言讨论求助区,楼主发这里有什么问题吗{:1_926:} 我感觉没什么问题。 我也觉得没什么问题,毕竟自己也踩过坑{:1_918:} 建议 找本 javascript DOM 编程艺术看看,里面也许有你需要的东西
页:
[1]