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 相关文章推荐
juqery 学习之六 CSS--css、位置、宽高
Feb 11 Javascript
js新闻滚动 js如何实现新闻滚动效果
Jan 07 Javascript
jquery模拟alert的弹窗插件
Jul 31 Javascript
JavaScript学习小结(7)之JS RegExp
Nov 29 Javascript
加载 vue 远程代码的组件实例详解
Nov 20 Javascript
实例讲解javascript实现异步图片上传方法
Dec 05 Javascript
解决vue中虚拟dom,无法实时更新的问题
Sep 15 Javascript
详解mpvue scroll-view自动回弹bug解决方案
Oct 01 Javascript
从理论角度讨论JavaScript闭包
Apr 03 Javascript
JS实现返回上一页并刷新页面的方法分析
Jul 16 Javascript
javascript History对象原理解析
Feb 17 Javascript
js事件机制----捕获与冒泡机制实例分析
May 22 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
yii2学习教程之5种内置行为类详解
2017/08/03 PHP
extjs之去除s.gif的影响
2010/12/25 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
2014/06/27 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
Three.js学习之网格
2016/08/10 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
2018/03/12 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
应届生求职信写作技巧
2013/10/24 职场文书
电气工程师岗位职责
2014/01/01 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
教师产假请假条范文
2014/04/10 职场文书
人代会简报
2015/07/21 职场文书
2015年中秋节主持词
2015/07/30 职场文书
2015年库房管理工作总结
2015/10/14 职场文书
妇产科护理心得体会
2016/01/22 职场文书