如下两个例子:
例子一(script内有效调用)
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>函数调用</title>
<script type="text/javascript">
function tcon()
{
alert("恭喜你学会函数调用了!");
}
tcon(); //调用函数,成功调用
</script>
</head>
<body>
</body>
</html>
例子二(script内无效调用)
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>计时器</title>
<script type="text/javascript">
var num=0;
function startCount() {
document.getElementById('count').value=num;
num=num+1;
setTimeout(startCount,1000);
}
startCount(); //这里调用函数,但实际上无反应;
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>
我的理解有误,你的解释是正确的,厉害呀,给你点赞
后续认识更新:
如果JS放在HTML元素之前,且JS中有获取HTML元素对象的语句,会因为HTML中其他元素加载时间晚于JS代码,导致无法获取HTML元素对象;
解决的方法:a.将JS放在相应HTML元素对象之后,但这样做比较不方便;b.把获取对象的语句放入window.onload事件中,那么获取对象的语句会在网页加载完毕过后才执行,避免了以上问题!
例:window.onload=function(){......}
这是因为你的第二个代码中存在 document.getElementById('count').value=num;document是文档对象,一旦一个函数中存在这种对象,就必须有相关的事件处理机制调用该函数才行,比如:<input type="text" id="count" onfocus="startCount()"/>,这样就不会出错了。JavaScript的事件有很多,比如:onclick、onblur.....