為什么有時候在script內(nèi)直接調(diào)用函數(shù)有效,有時候卻調(diào)用不了?
如下兩個例子:
例子一(script內(nèi)有效調(diào)用)
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>函數(shù)調(diào)用</title>
<script type="text/javascript">
function tcon()
? {
alert("恭喜你學(xué)會函數(shù)調(diào)用了!");
? }
? tcon(); ? ?????????//調(diào)用函數(shù),成功調(diào)用
</script>
</head>
<body>
</body>
</html>
例子二(script內(nèi)無效調(diào)用)
<!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(); ? ????//這里調(diào)用函數(shù),但實際上無反應(yīng);
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>
2016-03-10
我的理解有誤,你的解釋是正確的,厲害呀,給你點贊
2016-03-28
后續(xù)認(rèn)識更新:
如果JS放在HTML元素之前,且JS中有獲取HTML元素對象的語句,會因為HTML中其他元素加載時間晚于JS代碼,導(dǎo)致無法獲取HTML元素對象;
解決的方法:a.將JS放在相應(yīng)HTML元素對象之后,但這樣做比較不方便;b.把獲取對象的語句放入window.onload事件中,那么獲取對象的語句會在網(wǎng)頁加載完畢過后才執(zhí)行,避免了以上問題!
例:window.onload=function(){......}
2016-03-06
這是因為你的第二個代碼中存在?document.getElementById('count').value=num;document是文檔對象,一旦一個函數(shù)中存在這種對象,就必須有相關(guān)的事件處理機制調(diào)用該函數(shù)才行,比如:<input type="text" id="count" onfocus="startCount()"/>,這樣就不會出錯了。JavaScript的事件有很多,比如:onclick、onblur.....