设为首页收藏本站

郑州科技市场

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2064|回复: 1
打印 上一主题 下一主题

.JS代码放在head和body中的区别

[复制链接]
跳转到指定楼层
楼主
发表于 2012-7-17 14:22:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

  1. <head>
  2. function changelocation(id)
  3. {…………}
  4. </head>
  5. <body><select class="input1" id="vSort0" name="vSort0" onChange="changelocation(document.form4.vSort0.options[document.form4.vSort0.selectedIndex].value);" style="width:100px;">……省略……</select>
  6. ………………
  7. </body>
复制代码

现在有个js脚本:

  1. <script LANGUAGE= "JavaScript" >
  2. changelocation(document.form4.vSort0.options[document.form4.vSort0.selectedIndex].value); //初始化第一个一级分类的二级分类,去掉后第一个一级分类的二级分类在页面载入之后不显示。回选才显示。将一级分类的value传给changelocation()函数,生成二级分类的列表
  3. </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。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
回复

使用道具 举报

沙发
发表于 2012-7-17 14:25:30 | 只看该作者
放在head中的JS代码会在页面加载完成之前就读取,而放在body中的JS代码,会在整个页面加载完成之后读取。这句话挺管用!能够提高网站速度!哈哈……
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|郑州二手手机|郑州二手电脑|郑州二手笔记本|郑州科技市场 ( 豫ICP备11013749号  

GMT+8, 2025-1-22 22:55 , Processed in 0.194713 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2016 Comsenz Inc.

快速回复 返回顶部 返回列表