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 相关文章推荐
js三种排序算法分享
Aug 16 Javascript
使用js画图之饼图
Jan 12 Javascript
jquery获取及设置outerhtml的方法
Mar 09 Javascript
jQuery插件pagewalkthrough实现引导页效果
Jul 05 Javascript
在JavaScript中访问字符串的子串
Jul 07 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
Aug 22 Javascript
Vue实现双向绑定的方法
Dec 22 Javascript
从零学习node.js之利用express搭建简易论坛(七)
Feb 25 Javascript
浅谈vue.js中v-for循环渲染
Jul 26 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
Jul 29 Javascript
Websocket 向指定用户发消息的方法
Jan 09 Javascript
SSM VUE Axios详解
Oct 05 Vue.js
使用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
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
两个SUBMIT按钮,如何区分处理
2006/08/22 Javascript
javascript 网页跳转的方法
2008/12/24 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
浅析JavaScript中的delete运算符
2013/11/30 Javascript
利用jquery写的左右轮播图特效
2014/02/12 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
深入了解Node.js中的一些特性
2014/09/25 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
python3结合openpyxl库实现excel操作的实例代码
2018/09/11 Python
用Python 执行cmd命令
2020/12/18 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
酷瑞网络科技面试题
2012/03/30 面试题
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
火山动力Java笔试题
2014/06/26 面试题
体育专业学生自我评价范文
2014/01/17 职场文书
员工培训邀请函
2014/02/02 职场文书
历史专业大学生职业生涯规划书
2014/03/13 职场文书
就业协议书怎么填
2014/04/11 职场文书
员工薪酬激励方案
2014/06/13 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
班级联欢会主持词
2015/07/03 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
javaScript Array api梳理
2021/03/31 Javascript