Js放到HTML文件中的哪个位置有什么区别


Posted in Javascript onAugust 21, 2013

这个问题一直是初学者的困惑。先明白js能放在HTML的那个位置,分别是head和body中。大部分人都是放到head里面的。我学的时候也是稀里糊涂的跟着放到head的里面,也不知道为什么?今天看说说,放到这两个地方的区别:
先看一段html代码:

<html> 
<head> 
<title> New Document </title> 
<meta http-equiv="content-type" content="text/html;charset=utf-8"> <script type="text/javascript" src="test.js"></script> 
</head> 
<body> 
<div id="target"> 
</div> 
<button id="btn">按钮</button> 
</body> 
</html>

var test = function(){ 
var span = document.createElement("span"); 
span.innerHTML="添加"; 
document.getElementById("target").appendChild(span); 
} document.getElementById("btn").onclick=test;

如果这段代码放到head里面就不能运行。为什么?
这就要说一下HTML的运行顺序了,应该确切点说不是HTML的运行顺序,是js的运行顺序。HTML从上运行到<script type="text/html" src="test.js"></script>的时候进入test.js文件。前面的不会运行,也就是被function包起来的不会被运行,这个时候就执行最后一句。去页面中取元素Id为btn的元素。但是这个时候,HTML页面并没有加载完。肯定取不到id为btn的元素。会报错。这个时候有人说可以改为下面的代码:
document.body.onload = function(){ 
document.getElementById("btn").onclick=test; 
};

但是这样写还不如,写到</body>的前面呢。
有没有注意到,上面的[document.getElementById("btn").onclick=test;]中test没有括号,那如果改成[test()].会怎么样呢
Js放到HTML文件中的哪个位置有什么区别 
结果如图,页面载入就是是这个样子,点击按钮没有反应。将js代码改成如下:
var test=function(){ 
var span = document.createElement("span"); 
span.innerHTML="添加"; 
document.getElementById("target").appendChild(span); 
return function(){ 
alert("aaaa"); 
}; 
} document.getElementById("btn").onclick=test();

页面载入的时候,还是和上面一个样子,当点击按钮的时候,有反应了弹出一个框内容是”aaaa“;说明点击的时候执行了函数中return的值。也就是加括号的时候,不触发事件也会执行函数。触发事件的时候执行函数的返回值。不加括号的时候,触发事件才执行函数。

html的事件触发器,内容能写什么?
•比如onclick="";双引号里面能写什么。一般看到的可以写函数,比如,onclick="test();"。除了这个还能写什么呢?好有这个分号能不写吗?
•看上面的js代码,每一行都有分号。分号的作用就是为了语句被混淆。那也就是说onclick里面可以写js代码。写一个试试,如下

<html> 
<head> 
<title> New Document </title> 
<meta http-equiv="content-type" content="text/html;charset=utf-8"> 
</head> 
<body> 
<div id="target"> 
</div> 
<button id="btn" onclick="var espan = document.createElement('span');espan.innerHTML='添加';document.getElementById('target').appendChild(espan);">按钮</button> 
</body> 
</html>

•运行结果如下:
Js放到HTML文件中的哪个位置有什么区别 
•说明是可以运行的。这说明,不止可以放函数名了。

事件绑定方式?
•事件绑定方式常用有两种一是前面介绍的在事件中加入js代码。如:onclick="test();"。这种绑定方式有缺点,就是你要修改,美工已经写好的代码。
•还有一种方式就是我开始代码写的那样,通过id,只需要美工将每个元素都加上id就行。并不需要修改HTML代码。

Javascript 相关文章推荐
jquery实现居中弹出层代码
Aug 25 Javascript
JS保留小数点(四舍五入、四舍六入)实现思路及实例
Apr 25 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
Jun 21 Javascript
基于jquery实现左右按钮点击的图片切换效果
Jan 27 Javascript
浅析JS获取url中的参数实例代码
Jun 14 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Dec 14 Javascript
使用jquery datatable和bootsrap创建表格实例代码
Mar 17 Javascript
Angular实现下拉框模糊查询功能示例
Jan 03 Javascript
JavaScript作用域链实例详解
Jan 21 Javascript
vue实现动态按钮功能
May 13 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
Dec 07 Javascript
js实现随机点名功能
Dec 23 Javascript
使用jQuery避免鼠标双击的解决方案
Aug 21 #Javascript
jquery ready(fn)事件使用介绍
Aug 21 #Javascript
javaScript面向对象继承方法经典实现
Aug 20 #Javascript
Table冻结表头示例代码
Aug 20 #Javascript
JQuery判断子iframe何时加载完成解决方案
Aug 20 #Javascript
jQuery回车实现登录简单实现
Aug 20 #Javascript
jquery 延迟执行实例介绍
Aug 20 #Javascript
You might like
php实现将Session写入数据库
2015/07/26 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
Jquery事件的连接使用示例
2013/06/18 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
解析vue中的$mount
2017/12/21 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Django框架中处理URLconf中特定的URL的方法
2015/07/20 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
wxPython实现绘图小例子
2019/11/19 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
使用Python pip怎么升级pip
2020/08/11 Python
python如何随机生成高强度密码
2020/08/19 Python
工程班组长岗位职责
2013/12/30 职场文书
迟到检讨书400字
2014/01/13 职场文书
行政部工作岗位职责范本
2014/03/05 职场文书
积极向上的团队口号
2014/06/06 职场文书
2014年依法行政工作总结
2014/11/19 职场文书
旅游投诉信范文
2015/07/02 职场文书
观看《筑梦中国》纪录片心得体会
2016/01/18 职场文书
解决tk mapper 通用mapper的bug问题
2021/06/16 Java/Android
vue中使用mockjs配置和使用方式
2022/04/06 Vue.js