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 相关文章推荐
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
Mar 23 Javascript
javascript语言结构小记(一)
Sep 10 Javascript
js有关元素内容操作小结
Dec 20 Javascript
快速解决jQuery与其他库冲突的方法介绍
Jan 02 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
Mar 18 Javascript
JavaScript实现Iterator模式实例分析
Jun 09 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
Mar 21 jQuery
js实现方块上下左右移动效果
Aug 17 Javascript
利用JS如何计算字符串所占字节数示例代码
Sep 13 Javascript
vue结合Echarts实现点击高亮效果的示例
Mar 17 Javascript
JS装饰器函数用法总结
Apr 21 Javascript
Node.js API详解之 string_decoder用法实例分析
Apr 29 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目录拷贝实现方法
2015/07/10 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
php实现小程序支付完整版
2018/10/09 PHP
JavaScript 模拟用户单击事件
2009/12/31 Javascript
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
JavaScript动态绑定详解
2017/09/14 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
Python之py2exe打包工具详解
2017/06/14 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
python多线程同步之文件读写控制
2021/02/25 Python
python随机生成库faker库api实例详解
2019/11/28 Python
python十进制转二进制的详解
2020/02/07 Python
在python3中实现查找数组中最接近与某值的元素操作
2020/02/29 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
AJAX的全称是什么
2012/11/06 面试题
《盘古开天地》教学反思
2014/02/28 职场文书
Java 通过手写分布式雪花SnowFlake生成ID方法详解
2022/04/07 Java/Android