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 面向对象,实现namespace,class,继承,重载
Oct 29 Javascript
javascript window.opener的用法分析
Apr 07 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
Dec 08 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
Mar 28 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
Jun 06 Javascript
jquery队列queue与原生模仿其实现方法分享
Mar 25 Javascript
jquery特效 点击展示与隐藏全文
Dec 09 Javascript
js实现漫天星星效果
Jan 19 Javascript
Vue CLI3 开启gzip压缩文件的方式
Sep 30 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
Jan 16 jQuery
详谈Object.defineProperty 及实现数据双向绑定
Jul 18 Javascript
JavaScript流程控制(分支)
Dec 06 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抽奖小程序的实现代码
2013/06/18 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
window.location和document.location的区别分析
2008/12/23 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
JavaScript基于数组实现的栈与队列操作示例
2018/12/22 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
2020/10/10 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
2013年入党人员的自我鉴定
2013/10/25 职场文书
酒店管理专业毕业生推荐信
2013/11/10 职场文书
自主招生自荐信格式
2013/12/03 职场文书
尊老爱亲美德少年事迹材料
2014/08/14 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
给客户的感谢信
2015/01/21 职场文书
幼师小班个人总结
2015/02/12 职场文书
python turtle绘制多边形和跳跃和改变速度特效
2022/03/16 Python