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>