1.今天写js碰到一个奇怪的问题,写好的js放到body里面执行,但是放到head中没有任何效果,为什么导致这种原因呢?

看失效代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<style type="text/css">
.login{width:40px;height:25px;line-height:25px;background-color:#4E74A5;margin-top:30px;text-align:center;color:#FFF;}
</style>
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(".login").click(function(){
alert(1);
});
</script>
</head>
<body>
<input type="text" class="pass" />
<div id="enter" class="login"> 登录</div>
</body>
</html>

2.解决办法:把js代码放到body中,或者利用    window.onload = function(){}代码包裹,文档加载之后再执行,以后不建议放到head中。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<style type="text/css">
.login{width:40px;height:25px;line-height:25px;background-color:#4E74A5;margin-top:30px;text-align:center;color:#FFF;}
</style>
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
window.onload = function(){
$(".login").click(function(){
alert(1);
});
}
</script>
</head>
<body>
<input type="text" class="pass" />
<div id="enter" class="login"> 登录</div>
</body>
</html>

3.原因:

因为 文档还没加载,就读了js,js就不起作用了想在head里用的话,用window.onload = function(){//这里包裹你的代码}

js可以分为外部的和内部的,外部的js一般放到head内。内部的js也叫本页面的JS脚本,
内部的js一般放到body内,这样做的目的有很多:

1.不阻塞页面的加载(事实上js会被缓存)。

2.可以直接在js里操作dom,这时候dom是准备好的,即保证js运行时dom是存在的。

3.建议的方式是放在页面底部,监听window.onload 或 readystate 来触发js。

4.延伸:

head内的js会阻塞页面的传输和页面的渲染。head 内的 JavaScript 需要执行结束才开始渲染 body,所以尽量不要将 JS 文件放在 head 内。可以选择在 document 完成时,或者特定区块后引入和执行 JavaScript。head 内的 JavaScript 需要执行结束才开始渲染 body,所以尽量不要将 JS 文件放在 head 内。可以选择在 document 完成时,或者特定区块后引入和执行 JavaScript。

所以在head内的js一般要先执行完后,才开始渲染body页面。为了避免head引入的js脚本阻塞流浪器中主解析引擎对dom的解析工作,对dom的渲染,一般原则是,样式在前面,dom文档,脚本在最后面。遵循先解析再渲染再执行script这个顺序。

最新文章

  1. jQuery Ajax传值给Servlet,在Servlet里Get接受参数乱码的解决方法
  2. mvn-打jar运行包(含环境变量配置)
  3. 【安装MongoDB】CentOS7 下安装NodeJs+Express+MongoDB+Redis
  4. SIP介绍
  5. 每天一个linux命令(36):top命令
  6. POJ1459 Power Network(网络最大流)
  7. K3Cloud单据转换获取源单数据
  8. Hibernate的查询 HQL查询 查询某几列
  9. 【算法】插入排序 insertion_sort
  10. selenium 百度登陆
  11. Xcode7中 添加 .dylib
  12. x264源代码简单分析:编码器主干部分-2
  13. S0.4 二值图与阈值化
  14. Unity Shader 基础(2) Image Effect
  15. 远程连接阿里云的mysql数据库
  16. VM虚拟机下安装CentOS_6.5_x64
  17. macos版本mojave 安装postgres报错
  18. Oracle ADF VO排序及VO的查询模式
  19. WeUI logo专为微信设计的 UI 库 WeUI
  20. 线性基【CF845G】Shortest Path Problem?

热门文章

  1. Ubuntu更新提示哈希和不匹配“Hash Sum mismatch”
  2. 正则表达式 python
  3. 题目1042:Coincidence(最长公共子序列)
  4. C#集合之栈
  5. 2019 CCPC-Wannafly Winter Camp Day3(Div2, onsite)
  6. 通过遍历类向Aspose.cell模板中插入数据
  7. 3-----Docker实例-安装MySQL
  8. Python学习 day11
  9. 【云计算~Pig】一、基本语法
  10. MySQL 查询结果分组 group by