js放到head中失效的原因与解决方法


Posted in Javascript onMarch 07, 2017

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这个顺序。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
jquery实现图片随机排列的方法
May 04 Javascript
Jquery easyui 实现动态树
Nov 17 Javascript
JavaScript设计模式经典之工厂模式
Feb 24 Javascript
浅谈String.valueOf()方法的使用
Jun 06 Javascript
浅谈js中调用函数时加不加括号的问题
Jul 28 Javascript
JavaScript实现刷新不重记的倒计时
Aug 10 Javascript
微信小程序 Buffer缓冲区的详解
Jul 06 Javascript
详解JavaScript中操作符和表达式
Sep 12 Javascript
vue移动端项目缓存问题实践记录
Oct 29 Javascript
小程序获取周围IBeacon设备的方法
Oct 31 Javascript
vue实现form表单与table表格的数据关联功能示例
Jan 29 Javascript
基于JavaScript实现年月日三级联动
Jun 22 Javascript
Bootstrap媒体对象学习使用
Mar 07 #Javascript
angular十大常见问题
Mar 07 #Javascript
Bootstrap表单控件学习使用
Mar 07 #Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
Mar 07 #Javascript
Bootstrap进度条实现代码解析
Mar 07 #Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
Mar 07 #Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
Mar 07 #Javascript
You might like
php的4种常见运行方式
2015/03/20 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
设定php简写功能的方法
2019/11/28 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
jQuery aminate方法定位到页面具体位置
2013/12/26 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
微信小程序中setInterval的使用方法
2017/09/29 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
JavaScript 处理树数据结构的方法示例
2019/06/16 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
Python中使用SAX解析xml实例
2014/11/21 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
Python @property原理解析和用法实例
2020/02/11 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
军训个人总结
2015/03/03 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
卫生主题班会
2015/08/14 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
nginx配置虚拟主机的详细步骤
2021/07/21 Servers
Go Grpc Gateway兼容HTTP协议文档自动生成网关
2022/06/16 Golang