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 相关文章推荐
跨浏览器的事件对象介绍
Jun 27 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
Aug 07 Javascript
js中confirm实现执行操作前弹出确认框的方法
Nov 01 Javascript
纯JS实现旋转图片3D展示效果
Apr 12 Javascript
jQuery实现表格行上移下移和置顶的方法
May 22 Javascript
.NET微信公众号开发之创建自定义菜单
Jul 16 Javascript
JavaScript通过filereader接口读取文件
May 10 Javascript
详解angularJs中关于ng-class的三种使用方式说明
Jun 02 Javascript
微信小程序Redux绑定实例详解
Jun 07 Javascript
jQuery制作input提示内容(兼容IE8以上)
Jul 05 jQuery
如何为你的JS项目添加智能提示与类型检查详解
Mar 12 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
Oct 30 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入门小知识
2008/03/24 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
PHPStrom中实用的功能和快捷键大全
2015/09/23 PHP
简单实现php上传文件功能
2017/09/21 PHP
javascript parseInt 函数分析(转)
2009/03/21 Javascript
javascript 有趣而诡异的数组
2009/04/06 Javascript
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
javascript 面向对象继承
2009/11/26 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
Bootstrap栅格系统简单实现代码
2017/03/06 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
用Python实现随机森林算法的示例
2017/08/24 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
python基于递归解决背包问题详解
2019/07/03 Python
python 日志 logging模块详细解析
2020/03/31 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
JD Sports西班牙:英国领先的运动服装公司
2020/01/06 全球购物
工程安全员岗位职责
2014/03/09 职场文书
品牌服务方案
2014/06/03 职场文书
护理见习报告范文
2014/11/03 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python
浅谈Python魔法方法
2021/06/28 Java/Android
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server
python机器学习Github已达8.9Kstars模型解释器LIME
2021/11/23 Python