Python21期 day12 之JavaScript
一、DOM
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的操作
代码举例:
<body> <div id="box1"></div> <script type="text/javascript"> //1 获取事件源 var div = document.getElementById("box1"); //2 绑定事件 div.onclick = function(){ //书写事件驱动程序 alert("我是弹出内容"); } </script> </body>
常见事件如下:
事件名 说明
onclick 鼠标单击
ondbclick 鼠标双击
onkeyup 按下并释放键盘上的一个键时触发
onchange 文本内容或下拉菜单中的选项发生改变
onfocus 获得焦点,表示文本框等获得鼠标光标
onblur 失去焦点,表示文本框等失去鼠标光标
onmouseover 鼠标悬停,即鼠标停留在图片等的上方
onmouseout 鼠标移出,即离开图片等所在的区域
onload 网页文档加载事件
onunload 关闭网页时
onsubmit 表单提交事件
onreset 重置表单时
下面对这事件三要素,分别介绍:
1、获取事件源的方式(DOM节点的获取)
获取事件源的常见方式如下:
//方式一:通过id获取单个标签
var div1 = document.getElementById("box1");
//方式二:通过标签名获得标签数组
var arr1 = document.getElementByTagName("div1");
//方式三:通过类名获得标签数组
var arr2 = document.getElementByClassName("hehe");
2、绑定事件的方式
方式一:直接绑定匿名函数
<div id="box1"></div> <script> var div1 = document.getElementById("box1"); div1.onclick = function(){ 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>
注意上方代码的注释:绑定的时候,是写fn,不是写fn()。fn代表的是整个函数,而fn()代表的是返回值
方式三:行内绑定
<!--行内绑定--> <div id="box1" onclick="fn()"></div> <script type="text/javascript"> function fn() { alert("我是弹出的内容"); } </script>
注意第一行代码,绑定时,是写的fn(),因为绑定的这段代码不是写在js代码里的,而是被识别成了字符串
3、事件驱动程序
<style> #box { width: 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"; } </script>
上方代码注意事项:
在js里写属性值时,要用引号。
在js里写属性名时,是backgroundColor,不是CSS里的background-color。记得所有像CSS属性的text-*,line-*,background-*等在js里都写成驼峰
onload事件
当页面加载(文本和图片)完毕的时候,触发onload事件
<script type="text/javascript"> window.onload = function(){ console.log("小马哥"); //等页面加载完毕后,打印字符串 } </script>
有一点需要知道:js的加载是和html同步加载的。因此,如果使用元素在定义元素之前,容易报错,这个时候,onload事件就能派上用处。可以把使用元素的代码放在onload里,就能保证这段代码是最后执行
建议是:整个页面上所有元素加载完毕在执行js内容。所以,window.onload可以预防使用标签在定义标签之前
事件案例:京东顶部广告栏关闭
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> *{ padding: 0; margin: 0; } .top-banner{ /*position: relative;*/ background-color: rgb(230, 15, 82); } .top-banner .w{ width: 1190px; position: relative; margin: 0 auto; } .top-banner .banner{ display: block; width: 100%; height: 80px; background: url('./close.jpg') no-repeat center 0; } .top-banner .close{ position: absolute; right: 0; top:0; text-decoration: none; color: white; width: 20px; height: 20px; line-height: 20px; text-align: center; } .hide{ display: none; } </style> </head> <body> <div class="top-banner" id="topBanner"> <div class="w"> <a href="#" class="banner"></a> <a href="#" class="close" id="closeBanner">x</a> </div> </div> <script type="text/javascript"> //需求:点击案例,隐藏盒子 //1 获取事件源和相关元素 window.onload = function(){ var closeBanar = document.getElementById('closeBanar'); var topBanar = document.getElementById('topBanar'); //2 绑定事件 closeBanar.onclick = function(){ //3 书写事件驱动程序 topBanar.style.display = 'none'; } } </script> </body> </html>
实例:当鼠标悬停在img上时,更换为另外一张图片;鼠标离开时,还原为本来的图片
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script> //window.onload 页面加载完毕以后再执行此代码 window.onload = function(){ //需求:鼠标放到img上,更换为另一张图片,也就是修改路径(src的值)。 //步骤 //1.获取事件源 var img = document.getElementById("box"); //2.绑定事件(悬停事件,鼠标进入到事件源中立即触发事件) img.onmouseover = function(){ //3.书写事件驱动程序(修改src) img.src = "imgs/jd2.png"; } //1.获取事件源 var img = document.getElementById("box"); //2.绑定事件(悬停事件:鼠标进入到事件源中立即出发事件) img.onmouseout = function () { //3.书写事件驱动程序(修改src) img.src = "image/jd1.png"; } } </script> </head> <body> <img id="box" src="image/jd1.png" style="cursor: pointer;border: 1px solid #ccc;"/> </body> </html>
函数
函数:就是将一些语句进行封装,然后通过调用的形式,执行这些语句
函数的作用:
将大量重复的语句写在函数里,可以直接调用,避免重复劳动
简化编程,让编程模块化
sayHello(); //调用函数
//定义函数:
function sayHello(){
console.log("hello");
console.log("hello world");
}
1、函数的定义
函数定义的语法:
function 函数名字(){
}
解释如下:
function:关键字,中文意思“函数”、“功能”
函数名字:命名规定和变量的命名规定一样,只能是字母、数字、下划线、美元符号,不能以数字开头
参数:后面有一对小括号,里面放参数
大括号里,是这个函数的语句
2、函数的调用
语法:
函数名字();
函数的返回值
例子:
console.log(sum(3,4));
//函数,求和
function sum(a,b) {
return a+b;
}

浙公网安备 33010602011771号