一、昨天寫javascript的時候(http://www.w3school.com.cn/tiy/t.asp?f=jseg_timing_stop)javascript
<!-- lang: html --> <head> <!-- lang: html --> <script type="text/javascript"> <!-- lang: html --> var c=0 <!-- lang: html --> var t <!-- lang: html --> function timedCount() <!-- lang: html --> { <!-- lang: html --> document.getElementById('txt').value=c <!-- lang: html --> c=c+1 <!-- lang: html --> t=setTimeout("timedCount()",1000) <!-- lang: html --> } <!-- lang: html --> <!-- lang: html --> function stopCount() <!-- lang: html --> { <!-- lang: html --> c=0; <!-- lang: html --> setTimeout("document.getElementById('txt').value=0",0); <!-- lang: html --> clearTimeout(t); <!-- lang: html --> } <!-- lang: html --> </script> <!-- lang: html --> </head>
這個計時的方法,timedCount都不能改爲其它的,我覺得只要有setTimeout就能夠了,外面的函數本身命名,可是不是這樣的。雖然不是很理解,可是知道了應該這麼使用。html
二、感受有點奇怪的時候腳本寫在body裏面與寫在head裏面也有差異java
<!-- lang: html --> <!DOCTYPE html> <!-- lang: html --> <html> <!-- lang: html --> <head> <!-- lang: html --> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- lang: html --> </head> <!-- lang: html --> <body > <!-- lang: html --> <form > <!-- lang: html --> <div id="test" class="mod-spm" style="background-color:#00ff00;height:400px;width:400px" > <!-- lang: html --> <div></div> <!-- lang: html --> <div></div> <!-- lang: html --> </div> <!-- lang: html --> <input type="button" value="開始計時!" > <!-- lang: html --> <input type="text" id="txt"> <!-- lang: html --> </form> <!-- lang: html --> <script type="text/javascript"> <!-- lang: html --> var i = 0; <!-- lang: html --> var t; <!-- lang: html --> //debugger; <!-- lang: html --> document.getElementById("test").onmouseover=function(){timedCount()}; <!-- lang: html --> document.getElementById("test").onmouseout=function(){stopCount()}; <!-- lang: html --> <!-- lang: html --> function timedCount() <!-- lang: html --> { <!-- lang: html --> document.getElementById('txt').value=i; <!-- lang: html --> i=i+1; <!-- lang: html --> t=setTimeout("timedCount()",1000); <!-- lang: html --> }; <!-- lang: html --> <!-- lang: html --> function stopCount(){ <!-- lang: html --> clearTimeout(t); <!-- lang: html --> }; <!-- lang: html --> <!-- lang: html --> </script> <!-- lang: html --> </body> <!-- lang: html --> </html>
上面的這段javascript代碼,我把它寫在body裏面能運行,可是寫在head裏面就會提示null,(在chrome上調試) javascript是解釋型語言,因此這樣會null,chrome
三、這是問題搞明白之後的其它幾種形式的代碼 下面是運行錯誤的代碼,可是這是思考過程當中嘗試過的代碼,因此也記錄的下來:函數
<!-- lang: html -->ui
<!DOCTYPE html> <!-- lang: html --> <html> <!-- lang: html --> <head> <!-- lang: html --> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- lang: html --> <script type="text/javascript"> <!-- lang: html --> // debugger; <!-- lang: html --> if(document.readyState=="complete"){ <!-- lang: html --> var i = 0; <!-- lang: html --> var t; <!-- lang: html --> <!-- lang: html --> function timedCount() <!-- lang: html --> { <!-- lang: html --> document.getElementById('txt').value=i; <!-- lang: html --> i=i+1; <!-- lang: html --> t=setTimeout("timedCount()",1000); <!-- lang: html --> }; <!-- lang: html --> <!-- lang: html --> function stopCount(){ <!-- lang: html --> clearTimeout(t); <!-- lang: html --> }; <!-- lang: html --> debugger; <!-- lang: html --> var a = document.getElementById("test"); <!-- lang: html --> a.onmouseover=function(){timedCount()}; <!-- lang: html --> document.getElementById("test").onmouseout=function(){stopCount()}; <!-- lang: html --> } <!-- lang: html --> <!-- lang: html --> </script> <!-- lang: html --> </head> <!-- lang: html --> <body > <!-- lang: html --> <form > <!-- lang: html --> <div id="test" class="mod-spm" style="background-color:#00ff00;height:400px;width:400px" > <!-- lang: html --> <div></div> <!-- lang: html --> <div></div> <!-- lang: html --> </div> <!-- lang: html --> <input type="button" value="開始計時!" > <!-- lang: html --> <input type="text" id="txt"> <!-- lang: html --> </form> <!-- lang: html --> <!-- lang: html --> </body> <!-- lang: html --> </html>
上面的這段代碼執行是不對的,由於在加載完以前先執行了javascript,這個時候判斷是不經過的,最後若是沒有斷點,調試的時候在控制檯能看到document.readyState=="complete",由於調試的時候顯示的是已經加裝玩的狀態:debug
若是添加了onload就是加載後執行javascript了調試
<!-- lang: html --> <!DOCTYPE html> <!-- lang: html --> <html> <!-- lang: html --> <head> <!-- lang: html --> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- lang: html --> <script type="text/javascript"> <!-- lang: html --> // debugger; <!-- lang: html --> function m(){ <!-- lang: html --> // if(document.readyState=="complete"){ <!-- lang: html --> var i = 0; <!-- lang: html --> var t; <!-- lang: html --> <!-- lang: html --> function timedCount() <!-- lang: html --> { <!-- lang: html --> document.getElementById('txt').value=i; <!-- lang: html --> i=i+1; <!-- lang: html --> t=setTimeout("timedCount()",1000); <!-- lang: html --> }; <!-- lang: html --> <!-- lang: html --> function stopCount(){ <!-- lang: html --> clearTimeout(t); <!-- lang: html --> }; <!-- lang: html --> debugger; <!-- lang: html --> var a = document.getElementById("test"); <!-- lang: html --> a.onmouseover=function(){timedCount()}; <!-- lang: html --> document.getElementById("test").onmouseout=function(){stopCount()}; <!-- lang: html --> // } <!-- lang: html --> } <!-- lang: html --> </script> <!-- lang: html --> </head> <!-- lang: html --> <body onload="m()"> <!-- lang: html --> <form > <!-- lang: html --> <div id="test" class="mod-spm" style="background-color:#00ff00;height:400px;width:400px" > <!-- lang: html --> <div></div> <!-- lang: html --> <div></div> <!-- lang: html --> </div> <!-- lang: html --> <input type="button" value="開始計時!" > <!-- lang: html --> <input type="text" id="txt"> <!-- lang: html --> </form> <!-- lang: html --> <!-- lang: html --> </body> <!-- lang: html --> </html>
寫成下面的方式也能夠: 下面這張方法也能夠:code
<!-- lang: html --> <!DOCTYPE html> <!-- lang: html --> <html> <!-- lang: html --> <head> <!-- lang: html --> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- lang: html --> <script type="text/javascript"> <!-- lang: html --> // debugger; <!-- lang: html --> window.onload = function (){ <!-- lang: html --> // if(document.readyState=="complete"){ <!-- lang: html --> var i = 0; <!-- lang: html --> var t; <!-- lang: html --> <!-- lang: html --> function timedCount() <!-- lang: html --> { <!-- lang: html --> document.getElementById('txt').value=i; <!-- lang: html --> i=i+1; <!-- lang: html --> t=setTimeout("timedCount()",1000); <!-- lang: html --> }; <!-- lang: html --> <!-- lang: html --> function stopCount(){ <!-- lang: html --> clearTimeout(t); <!-- lang: html --> }; <!-- lang: html --> debugger; <!-- lang: html --> var a = document.getElementById("test"); <!-- lang: html --> a.onmouseover=function(){timedCount()}; <!-- lang: html --> document.getElementById("test").onmouseout=function(){stopCount()}; <!-- lang: html --> // } <!-- lang: html --> } <!-- lang: html --> </script> <!-- lang: html --> </head> <!-- lang: html --> <body> <!-- lang: html --> <form > <!-- lang: html --> <div id="test" class="mod-spm" style="background-color:#00ff00;height:400px;width:400px" > <!-- lang: html --> <div></div> <!-- lang: html --> <div></div> <!-- lang: html --> </div> <!-- lang: html --> <input type="button" value="開始計時!" > <!-- lang: html --> <input type="text" id="txt"> <!-- lang: html --> </form> <!-- lang: html --> <!-- lang: html --> </body> <!-- lang: html --> </html>
這兩種方式就能夠不用把javascript寫在body裏面了,可是若是用jQuery的話,也能夠不用寫在body裏面的。 jQuery裏面的使用方式是這樣的:orm
jQuery 代碼: $(document).ready(function(){ // 在這裏寫你的代碼... }); 描述: 使用 $(document).ready() 的簡寫,同時內部的 jQuery 代碼依然使用 $ 做爲別名,而無論全局的 $ 爲什麼。 jQuery 代碼: $(function($) { // 你能夠在這裏繼續使用$做爲別名... });
可是和前面嘗試的幾種方式都同樣,仍是不能遞歸計算時間