解释:DOM,指的是文档对象模型(Document Object Model)。是针对HTML和XML文档的
一个API,描绘了一个层次化的节点树,允许开发人员添加、删除和修改页面的某一部分。
HTML DOM树形结构如下:
事件
三要素:事件源(受监听的html标签)、事件(监听器)、事件驱动程序(动作)。
获取时间源的方式(DOM节点的获取)
获取事件源的常见方式如下:
1
2
3
4
5var div1 = document.getElementById("box1"); //方式一:通过id获取单个标签
var arr1 = document.getElementsByTagName("div"); //方式二:通过 标签名 获得 标签数组,所以有s
var arr2 = document.getElementsByClassName("hehe"); //方式三:通过 类名 获得 标签数组,所以有s绑定事件的方式
方式一:直接绑定匿名函数
1
2
3
4
5
6
7
8
9<div id="box1" ></div>
<script type="text/javascript">
var div1 = document.getElementById("box1");
//绑定事件的第一种方式
div1.onclick = function () {
alert("我是弹出的内容");
}
</script>方式二:先单独定义函数,再绑定
1
2
3
4
5
6
7
8
9
10
11<div id="box1" ></div>
<script type="text/javascript">
var div1 = document.getElementById("box1");
//绑定事件的第二种方式
div1.onclick = fn; //注意,这里是fn,不是fn()。fn()指的是返回值。
//单独定义函数
function fn() {
alert("我是弹出的内容");
}
</script>方式三:行内绑定
1
2
3
4
5
6
7
8
9
10<!--行内绑定-->
<div id="box1" onclick="fn()"></div>
<script type="text/javascript">
function fn() {
alert("我是弹出的内容");
}
</script>事件驱动程序
我们在上面是拿alert举例,不仅如此,我们还可以操作标签的属性和样式。举例如下:
点击鼠标时,原本粉色的div变大了,背景变红:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21<head>
<style>
#box1{
width:100px;
height:100px;
background-color:pink;
}
</style>
</head>
<body>
<div id="box1"></div>
<script type="text/javascript">
var div1=document.getElementById("box1");
//点击鼠标时,原本粉色的div变大了,背景变红了
div1.onclick = function(){
div1.style.width = "200px"; //属性值要写引号
div1.style.height = "200px";
div1.style.backgroundColor = "red"; //属性名是backgroundColor,不是background-color
}
</script>
</body>实现效果如下:
onload事件
onload事件比较特殊,这里单独讲一下。
当页面加载(文本和图片)完毕的时候,触发onload事件。
举例:
1 | <script type="text/javascript"> |
有一点我们要知道:js的加载是和html同步加载的。因此,如果使用元素在定义元素之前,容易报错。这个时候,onload事件就能派上用场了,我们可以把使用元素的代码放在onload里,就能保证这段代码是最后执行。
建议是:整个页面上所有元素加载完毕在执行js内容。所以,window.onload可以预防使用标签在定义标签之前。
事件举例:京东顶部广告栏
比如上面这张图,当鼠标点击右上角的X
时,关掉整个广告栏,这就要用到事件。
代码实现如下:
1 |
|
注意最后一行代码,这种方式会替换旧类名,意思是,不管之前的类名叫什么,都会被修改。