javascript的加载顺序问题

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

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

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

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

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

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

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

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

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

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

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

转载于:https://my.oschina.net/u/933915/blog/307530

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值