一、昨天写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($) { // 你能够在这里继续使用$做为别名... });
可是和前面尝试的几种方式都同样,仍是不能递归计算时间