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 相关文章推荐
浅析js封装和作用域
Jul 09 Javascript
原生JavaScript+LESS实现瀑布流
Dec 12 Javascript
常用的JavaScript模板引擎介绍
Feb 28 Javascript
JavaScript检测鼠标移动方向的方法
May 22 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
Jun 23 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
Oct 26 Javascript
javascript简单判断输入内容是否合法的方法
May 11 Javascript
JavaScript自定义分页样式
Jan 17 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
Jan 20 Javascript
webpack教程之webpack.config.js配置文件
Jul 05 Javascript
微信小程序自定义弹窗wcPop插件
Nov 19 Javascript
单线程JavaScript实现异步过程详解
May 19 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
第十五节--Zend引擎的发展
2006/11/16 PHP
php5.3 废弃函数小结
2010/05/16 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
JavaScript 继承的实现
2009/07/09 Javascript
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
javascript实现遮罩层动态效果实例
2019/05/14 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
node后端服务保活的实现
2019/11/10 Javascript
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
pygame实现非图片按钮效果
2019/10/29 Python
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
金融专业个人求职信
2013/09/22 职场文书
《纸船和风筝》教学反思
2014/02/15 职场文书
公司经理聘任书
2014/03/29 职场文书
《大自然的语言》教学反思
2014/04/08 职场文书
村居抓节水倡议书
2014/05/19 职场文书
保险公司演讲稿
2014/09/02 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
虎兄虎弟观后感
2015/06/12 职场文书
python基础之爬虫入门
2021/05/10 Python
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python
24年收藏2000多部退役军用电台
2022/02/18 无线电