JavaScript的组成
三部分:
- ECMAScript: JavaScript的语法标准,包括变量,表达式,运算符,函数,if语句,for语句
- DOM: 文档对象模型,操作网页上元素的API,比如让盒子移动,变色,轮播图等
- BOM: 浏览器对象模型,操作浏览器部分功能的API,比如让浏览器自动滚动
事件
JS是以事件驱动为核心的一门语言
事件三要素
事件源,事件,事件驱动程序
比如,我用手去按开关,灯亮了。这件事情里,事件源是:手。事件是:按开关。事件驱动程序是:灯的开和关。
再比如,网页上弹出一个广告,我点击右上角的X,广告就关闭了。这件事情里,事件源是:X。事件是:onclick。事件驱动程序是:广告关闭了
于是我们可以总结出:谁引发的后续事件,谁就是事件源
总结如下:
-
事件源:引发后续事件的html标签。
-
事件:js已经定义好了(见下图)。
-
事件驱动程序:对样式和html的操作。也就是DOM
因此,代码书写要分三步走:
1. 获取事件源
document.getElementById(“box”);
2. 绑定事件
box.onclick = function(){ 事件驱动程序 }; //事件源.事件
3. 书写事件驱动程序:关于DOM的操作(业务逻辑)
具体代码实例:
<div id="box" class="box">
<div id="child">
</div>
</div>
<script type="text/javascript">
//1.获取事件源
var div = document.getElementById("box");
//2.绑定事件
div.onclick = function () {
//3.书写业务逻辑
alert("我是弹出的内容");
}
常见事件

获取事件源的方式(DOM节点的获取)
var div1 = document.getElementById("box1"); //方式一:通过id获取单个标签
var arr1 = document.getElementsByTagName("div1"); //方式二:通过 标签名 获得 标签数组,所以有s
var arr2 = document.getElementsByClassName("hehe"); //方式三:通过 类名 获得 标签数组,所以有s
绑定事件的方式
方式一:直接绑定匿名函数
<div id="box" class="box">
<div id="child">
</div>
</div>
<script type="text/javascript">
//1.获取事件源
var div = document.getElementById("box");
//2.绑定事件
div.onclick = function () {
//3.书写业务逻辑
alert("我是弹出的内容");
}
</script>
方式二:先单独定义函数,再绑定
<div id="box1" ></div>
<script type="text/javascript">
var div1 = document.getElementById("box1");
//绑定事件的第二种方式
div1.onclick = fn; //注意,这里是fn,不是fn()。fn()指的是返回值。
//单独定义函数
function fn() {
alert("我是弹出的内容");
}
</script>
方式三:行内绑定
<!--行内绑定-->
<div id="box1" onclick="fn()"></div>
<script type="text/javascript">
function fn() {
alert("我是弹出的内容");
}
</script>
事件驱动程序
<style>
#box {
100px;
height: 100px;
background-color: pink;
cursor: pointer;
}
</style>
</head>
<body>
<div id="box" ></div>
<script type="text/javascript">
var oDiv = document.getElementById("box");
//点击鼠标时,原本粉色的div变大了,背景变红了
oDiv.onclick = function () {
oDiv.style.width = "200px"; //属性值要写引号
oDiv.style.height = "200px";
oDiv.style.backgroundColor = "red"; //属性名是backgroundColor,不是background-Color
}
</script>
注意事项:
- 在js里写属性值时,要用引号
- 在js里写属性名时,是
backgroundColor,不是CSS里面的background-Color。记得所有的像css属性的text-*,line-*、backgroun-*等在js中都写成驼峰
onload事件
当页面加载(文本和图片)完毕的时候,触发onload事件。
<script type="text/javascript">
window.onload = function () {
console.log("哎哟不错哦,我是周杰伦"); //等页面加载完毕时,打印字符串
}
</script>