zoukankan      html  css  js  c++  java
  • JS代码放在head和body中的区别: 放在head中的JS代码会在页面加载完成之前就读取,而放在body中的JS代码,会在整个页面加载完成之后读取。

    说了半天闲话,其RT的答案很简单:

    放在head中的JS代码会在页面加载完成之前就读取,而放在body中的JS代码,会在整个页面加载完成之后读取。

    那么有什么用途呢?

    这就告诉我们,如果我们想定义一个全局对象,而这个对象是页面中的某个按钮(诸如此类)时,我们必须将其放入body中,道理很明显:如果放入head,那当你定义的时候,那个按钮都没有被加载,你能得到的只可能是一个undefind

    以上。

    那么有什么不同呢?先看一个例子:

    一个二级级联动态下拉列表框,一级分类(即大类别)id="vSort0".

    <head>

    function changelocation(id)

    {…………}

    </head>

    <body><select class="input1" id="vSort0" name="vSort0"onChange="changelocation(document.form4.vSort0.options[document.form4.vSort0.selectedIndex].value);" style="100px;">……省略……</select>

    ………………

    </body>

    现在有个js脚本:

    <script LANGUAGE="JavaScript" >

    changelocation(document.form4.vSort0.options[document.form4.vSort0.selectedIndex].value);//初始化第一个一级分类的二级分类,去掉后第一个一级分类的二级分类在页面载入之后不显示。回选才显示。将一级分类的value传给changelocation()函数,生成二级分类的列表

    </script>

    那么把这个js脚本放head里面还是body里面呢?答案是不仅要放到body里面,而且还得放到定义id='vSort0'的列表框后面,因为这个js脚本中有document.form4.vSort0.selectedIndex,如果放到head里或者body的id='vSort0'前,页面加载后顺序执行代码,执行到这个js发现vSort0未定义(即undefind),这个js也就失去了作用。

    而为什么我们经常看到有很多的人把js脚本放到head里面没事呢?对!就是因为你看到的在head里的js代码有onclick等事件传递了变量给函数。

    这就告诉我们,如果我们想定义一个全局对象,而这个对象与页面中的某个按钮(等等)有关时,我们必须将其放入body中,道理很明显:如果放入head,那当页面加载head部分的时候,那个按钮(等等)都还没有被定义(也可以说是还没有被加载,因为加载的过程就是执行代码的过程,包括了定义),你能得到的只可能是一个undefind。

     

    注:转载自:http://jorton468.blog.163.com/blog/static/7258813520107102130260/

  • 相关阅读:
    关于在Eclipse中使用正则表达式替换的一点记录(使用正则表达式的分组)
    C#学习笔记(六):可空类型、匿名方法和迭代器
    C#学习笔记(五):泛型
    C#学习笔记(四):委托和事件
    C#学习笔记(三):值类型、引用类型及参数传递
    C#学习笔记(二):继承、接口和抽象类
    Unity3D之AssetBundle学习:Android上运行笔记
    js arguments 内置对象
    JS面向对象高级特性
    js 阻止事件冒泡 支持所有主流浏览器
  • 原文地址:https://www.cnblogs.com/guanghuiqq/p/2624655.html
Copyright © 2011-2022 走看看