為什么有時候在script內直接調用函數有效,有時候卻調用不了?
如下兩個例子:
例子一(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>
2016-03-10
我的理解有誤,你的解釋是正確的,厲害呀,給你點贊
2016-03-28
后續認識更新:
如果JS放在HTML元素之前,且JS中有獲取HTML元素對象的語句,會因為HTML中其他元素加載時間晚于JS代碼,導致無法獲取HTML元素對象;
解決的方法:a.將JS放在相應HTML元素對象之后,但這樣做比較不方便;b.把獲取對象的語句放入window.onload事件中,那么獲取對象的語句會在網頁加載完畢過后才執行,避免了以上問題!
例:window.onload=function(){......}
2016-03-06
這是因為你的第二個代碼中存在?document.getElementById('count').value=num;document是文檔對象,一旦一個函數中存在這種對象,就必須有相關的事件處理機制調用該函數才行,比如:<input type="text" id="count" onfocus="startCount()"/>,這樣就不會出錯了。JavaScript的事件有很多,比如:onclick、onblur.....