浅谈JavaScript在Html页面中的位置

今天有一道超级简单的H5+JS的题想了一个上午还不没有结果,晚上看了一下同学的代码中午想明白了,同时也借鉴了一下网上的结论,现分享给大家。

我有疑问的代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="gbk">
    <title>Document</title>
    <script type="text/javascript">
    document.getElementById("code").innerHTML=Math.floor(Math.random()*9000)+1000;
    function aa(){
        document.getElementById("code").innerHTML=Math.floor(Math.random()*9000)+1000;
    }
    function bb(){
        if(document.getElementById("code").innerHTML!=f1.name.value){
            alert("Input again!");
            f1.name.focus();
        }
       else
	  f1.submit();
   }
    </script>
</head>
<body>
    <form method="post" action="Questionnaire.html" name="f1">
    请输入验证码 <input type="text" name="name">
    <span id="code" size="10"></span>
    <input type="button" value="change" οnclick="aa()">
    <input type="button" value="submit" οnclick="bb()">
</body>
</html>
我发现,不论怎么改,一开始打开Html页面的时候验证码就是死活不出来,后来通过一个网站和自己的思考想了下,原来是我的js放的位置太靠前了!

改正如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="gbk">
    <title>Document</title>
</head>
<body>
    <form method="post" action="Questionnaire.html" name="f1">
    请输入验证码 <input type="text" name="name">
    <span id="code" size="10"></span>
    <input type="button" value="change" οnclick="aa()">
    <input type="button" value="submit" οnclick="bb()">
    <script type="text/javascript">
    document.getElementById("code").innerHTML=Math.floor(Math.random()*9000)+1000;
    function aa(){
        document.getElementById("code").innerHTML=Math.floor(Math.random()*9000)+1000;
    }
    function bb(){
        if(document.getElementById("code").innerHTML!=f1.name.value){
            alert("Input again!");
            f1.name.focus();
        }
       else
	  f1.submit();
   }
    </script>
</body>
</html>
网上有人说:html文件是自上而下的执行方式,但引入的css和javascript的顺序有所不同,css引入执行加载时,程序仍然往下执行,而执行到<script>脚本是则中断线程,待该script脚本执行结束之后程序才继续往下执行。所以,一般将script放在body之后是因为避免长时间执行script脚本而延迟阻塞。而有一些页面的效果的实现,是需要预先动态的加载一些js脚本,所以这些脚本应该放在<body>之前。其次, 不能将需要访问dom元素的js放在body之前,因为此时还没有开始生成dom,所以在body之前的访问dom元素的js会出错,或者无效。就是因为这个,在dom没生成好时我就给它添加了方法,才导致这样。

我这里属于DOM编程,我把js放在body前面,导致此时dom都无法生成,当然就达不到初始化的目的,希望以后引以为戒!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值