javascript的加載順序問題

一、昨天寫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($) { // 你能夠在這裏繼續使用$做爲別名... });

可是和前面嘗試的幾種方式都同樣,仍是不能遞歸計算時間

相關文章
相關標籤/搜索