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 相关文章推荐
Javascript 遍历对象中的子对象
Jul 03 Javascript
Mootools 1.2教程 定时器和哈希简介
Sep 15 Javascript
JS判断当前日期是否大于某个日期的实现代码
Sep 02 Javascript
jquery图片不完全按比例自动缩小的简单代码
Jul 29 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
Nov 14 Javascript
node.js 中国天气预报 简单实现
Jun 06 Javascript
Javascript 闭包详解及实例代码
Nov 30 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
Jan 04 Javascript
Node.js中的require.resolve方法使用简介
Apr 23 Javascript
vue router-link传参以及参数的使用实例
Nov 10 Javascript
Vue调试神器vue-devtools安装方法
Dec 12 Javascript
解决Antd Table组件表头不对齐的问题
Oct 27 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
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
PHP函数getenv简介和使用实例
2014/05/12 PHP
PHP生成条形图的方法
2014/12/10 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
jQuery学习5 jQuery事件模型
2010/02/07 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
[01:17]炒鸡美酒第四天TA暴走
2018/06/05 DOTA
Python赋值语句后逗号的作用分析
2015/06/08 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
python批量修改文件编码格式的方法
2018/05/31 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
Hanky Panky官方网站:内衣和睡衣
2019/07/25 全球购物
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
院药学专业个人求职信
2013/09/21 职场文书
大学生党员自我批评
2014/02/14 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
医院病假条怎么写
2015/08/17 职场文书
PHP策略模式写法
2021/04/01 PHP
go设置多个GOPATH的方式
2021/05/05 Golang
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python