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 event事件的传递与冒泡处理
Dec 06 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
Jul 05 Javascript
jquery-syntax动态语法着色示例代码
May 14 Javascript
jquery 插件实现多行文本框[textarea]自动高度
Mar 04 Javascript
浅谈被jQuery抛弃的函数及替代函数
May 03 Javascript
浅谈JavaScript中的字符编码转换问题
Jul 07 Javascript
JavaScript设计模式初探
Jan 07 Javascript
实例讲解js验证表单项是否为空的方法
Jan 09 Javascript
微信小程序图片横向左右滑动案例
May 19 Javascript
React教程之Props验证的具体用法(Props Validation)
Sep 04 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
Nov 30 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
Oct 28 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 验证图片生成函数
2009/05/21 PHP
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
php导出中文内容excel文件类实例
2015/07/06 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
php简单实现数组分页的方法
2016/04/30 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
2016/11/21 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
比较详细的关于javascript 解析json的代码
2009/12/16 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
vue实现循环切换动画
2018/10/17 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
理解python多线程(python多线程简明教程)
2014/06/09 Python
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
python模拟Django框架实例
2016/05/17 Python
Python实现带百分比的进度条
2016/06/28 Python
Python切换pip安装源的方法详解
2016/11/18 Python
Python闭包思想与用法浅析
2018/12/27 Python
Python 多维List创建的问题小结
2019/01/18 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
在校生钳工实习自我鉴定
2013/09/19 职场文书
超市中秋节促销方案
2014/03/21 职场文书
助学贷款贫困证明
2014/09/23 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
教师岗位职责范本
2015/04/02 职场文书
React四级菜单的实现
2022/04/08 Javascript
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS