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 相关文章推荐
THREE.JS入门教程(5)你应当知道的十件事
Jan 24 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
Nov 03 Javascript
纯css实现窗户玻璃雨滴逼真效果
Aug 23 Javascript
Bootstrap对话框使用实例讲解
Sep 24 Javascript
谈谈target=_new和_blank的不同之处
Oct 25 Javascript
javascript实现简单的可随机变色网页计算器示例
Dec 30 Javascript
ES6新数据结构Set与WeakSet用法分析
Mar 31 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
Jun 12 Javascript
vuex直接赋值的三种方法总结
Sep 16 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
May 06 Javascript
vue store之状态管理模式的详细介绍
Jun 13 Javascript
JavaScript 替换所有匹配内容及正则替换方法
Feb 12 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+SqlServer实现分页显示
2006/10/09 PHP
使用PHP批量生成随机用户名
2008/07/10 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
dwr spring的集成实现代码
2009/03/22 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
python遍历类中所有成员的方法
2015/03/18 Python
Python数据类型详解(二)列表
2016/05/08 Python
python操作mysql代码总结
2018/06/01 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
python实现人机猜拳小游戏
2020/02/03 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
交通专业个人自荐信格式
2013/09/23 职场文书
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
伊索寓言教学反思
2014/05/01 职场文书
工伤死亡理赔协议书
2014/10/20 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
优秀班组事迹材料
2014/12/24 职场文书
新闻稿格式范文
2015/07/18 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
Linux中各个目录的作用与内容
2022/06/28 Servers