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($) { // 你能够在这里继续使用$做为别名... });

可是和前面尝试的几种方式都同样,仍是不能递归计算时间

相关文章
相关标签/搜索