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 模拟雅虎首页的点击对话框效果
Apr 11 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
Jul 25 Javascript
javascript屏蔽右键代码
May 15 Javascript
node.js中的http.response.addTrailers方法使用说明
Dec 14 Javascript
Jquery实现遮罩层的方法
Jun 08 Javascript
jquery马赛克拼接翻转效果代码分享
Aug 24 Javascript
js数字舍入误差以及解决方法(必看篇)
Feb 28 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
Dec 07 Javascript
JavaScript中的一些隐式转换和总结(推荐)
Dec 22 Javascript
微信公众号生成新浪短网址的实现(快速生成)
Aug 18 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
Feb 28 Javascript
微信小程序收藏功能的实现代码
Jun 19 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 执行系统命令的方法
2009/07/07 PHP
PHP执行zip与rar解压缩方法实现代码
2010/12/05 PHP
thinkphp的c方法使用示例
2014/02/24 PHP
PHP-Java-Bridge使用笔记
2014/09/22 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
javascript Xml增删改查(IE下)操作实现代码
2009/01/30 Javascript
jquery中获取select选中值的代码
2011/06/27 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
在Python中移动目录结构的方法
2016/01/31 Python
python学习教程之使用py2exe打包
2017/09/24 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
python实现简单井字棋游戏
2020/03/04 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
篮球赛新闻稿
2015/07/17 职场文书
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers