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 学习笔记(十五)
Jan 28 Javascript
用js实现的自定义的对话框的实现代码
Mar 21 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
May 06 Javascript
js关于命名空间的函数实例
Feb 05 Javascript
javascript去除空格方法小结
May 21 Javascript
js动态创建及移除div的方法
Jun 03 Javascript
微信小程序实现全国机场索引列表
Jan 31 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
May 10 Javascript
微信小程序多音频播放进度条问题
Aug 28 Javascript
vue拖拽排序插件vuedraggable使用方法详解
Aug 21 Javascript
Vue实现按钮级权限方案
Nov 21 Javascript
如何在JavaScript中等分数组的实现
Dec 13 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之数组学习
2011/05/29 PHP
php smarty 二级分类代码和模版循环例子
2011/06/01 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
Javascript document.referrer判断访客来源网址
2020/05/15 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
2011/07/26 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
Web开发必知Javascript技巧大全
2016/02/23 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
Bootstrap 手风琴菜单的实现代码
2017/01/20 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
2017/03/08 Javascript
javascript简单链式调用案例分析
2017/05/10 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
pandas中Timestamp类用法详解
2017/12/11 Python
Python异常处理操作实例详解
2018/05/10 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
详解Pycharm与anaconda安装配置指南
2020/08/25 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
python RSA加密的示例
2020/12/09 Python
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
大学新生军训个人的自我评价
2013/10/03 职场文书
主持词开场白
2014/03/17 职场文书
优秀党支部申报材料
2014/12/24 职场文书
优秀党员个人总结
2015/02/14 职场文书
机器人瓦力观后感
2015/06/12 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技
MySQL如何使备份得数据保持一致
2022/05/02 MySQL
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang