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 相关文章推荐
javascript之对系统的toFixed()方法的修正
May 08 Javascript
jQuery ul标签下拉菜单演示代码
Dec 11 Javascript
提升你网站水平的jQuery插件集合推荐
Apr 19 Javascript
在Node.js应用中使用Redis的方法简介
Jun 24 Javascript
基于JS实现PHP的sprintf函数实例
Nov 14 Javascript
js如何判断输入字符串长度
Dec 16 Javascript
关于axios返回空对象的问题解决
Apr 04 Javascript
基于jQuery的表单填充实例
Aug 22 jQuery
vuejs选中当前样式active的实例
Aug 22 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
Apr 02 Javascript
jquery图片预览插件实现方法详解
Jul 18 jQuery
基于ssm框架实现layui分页效果
Jul 27 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基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
Vue之Watcher源码解析(2)
2017/07/19 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
Python 命令行参数sys.argv
2008/09/06 Python
windows上安装Anaconda和python的教程详解
2017/03/28 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
对python抓取需要登录网站数据的方法详解
2018/05/21 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
python合并多个excel文件的示例
2020/09/23 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
C++的几个面试题附答案
2016/08/03 面试题
大学生的应聘自我评价
2013/12/13 职场文书
年会主持人开场白台词
2015/05/29 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
2016年企业先进员工事迹材料
2016/02/25 职场文书
Nginx跨域问题解析与解决
2022/08/05 Servers