javascript的加载顺序问题

1、昨天写javascript的时候(http://www.w3school.com.cn/tiy/t.asp?f=jseg_timing_stop)


<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就可以了,外面的函数自己命名,但是不是这样的。虽然不是很理解,但是知道了应该这么使用。

2、感觉有点奇怪的时候脚本写在body里面与写在head里面也有差别


  <!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,

3、这是问题搞明白以后的其它几种形式的代码
下面是运行错误的代码,但是这是思考过程中尝试过的代码,所以也记录的下来:


<!-- 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”,因为调试的时候显示的是已经加装玩的状态:

如果添加了onload就是加载后执行javascript了


<!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>

写成下面的方式也可以:
下面这张方法也可以:


<!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里面的使用方式是这样的:

jQuery 代码:
$(document).ready(function(){
// 在这里写你的代码…
});
描述:
使用 $(document).ready() 的简写,同时内部的 jQuery 代码依然使用 $ 作为别名,而不管全局的 $ 为何。
jQuery 代码:
$(function($) {
// 你可以在这里继续使用$作为别名…
});

但是和前面尝试的几种方式都一样,还是不能递归计算时间

你可能感兴趣的:(javascript的加载顺序问题)