3-1前端笔记

HTML

1.1 介绍

  • HTML 指的是超文本标记/标签语言 (Hyper Text Markup Language)专门制作网页的计算机语言

注意:

1.<html>标签它代表当前页面是一个HTML

2.<head>标签中可以声明HTML页面的相关信息<html><head><title>拉钩有我 必须火!</body> </html>

3.<body>标签中它主要是用于显示页面信息

4.标签要有开始,有结束,成双成对

4.开始标签与结束标签中的内容是标签的内容,如果没有标签内容,可以让标签自关闭<br/>

5.大多数标签它具有属性,属性值要使用引号引起来。

6.HTML它本身是不区分大小写的

2.HTML的使用

2.1文件标签

<html> 标签: 代表当前书写的是一个HTML文档
<head 标签:存储的本页面的一些重要的信息,它不会显示
<head> 标签:有一个子标签<title>它是用于定义页面的标题的
<body>标签:书写的内容会显示出来

<body>标签的属性

  1. text 用于设置文字颜色
  2. bgcolor 用于设置页面的背景色
  3. background 用于设置页面的背景图片

2.2 排版标签

2.2.1 HTML注释

2.2.2 换行标签

<br/>标签就是一个换行(回车)功能标签,标签中的 / 可有可无的

2.2.3 段落标签

  • <p>标签中的内容,会在开始与结束之间产生一个空白行,并且它会自动换行.
  • 常用属性 align 它的作用是设置段落中的内容对齐方式 可取值有 left right center

2.2.4 水平线标签

<hr>标签会在页面上产生一个水平线

  • align:可取值有left right center 代表水平线位置
  • size:代表水平线厚度(粗细)
  • width:代表水平线宽度
  • color:水平线的颜色

2.2.5 分区标签

  • div是一个块标签,用来进行布局的

div与span都是“容器”的作用,具体区别:

  • div会自动换行,我们也叫这样的标签为块级元素
  • span标签它不会自动换行,我们也叫它为行内元素
  • div:整体划分区块
  • span:局部划分

2.3 字体标签

2.3.1 字体标签

<font>标签可以设置字体,字的大小及颜色,常用属性:

  • face:用于设置字体,例如 宋体 隶书 楷体
  • size:用于设置字的大小(大小默认设置1-7,7最大,想更大,往后学css即可)
  • color:用于设置字的颜色
  1. 使用十六进制方式,取值范围 #000000 ~ #FFFFFF (黑色到白色)。当颜色值为#cc3300 时,可简化成 #c30 这种方式
  2. RGB颜色表示法:RGB(x,y,z)。x、y、z是0 ~ 255之间的整数。rgb字母大小写无所谓

2.3.2 标题标记

<h1> ----- <h6>h1最大 h6最小,它们代表的是标题,自动换行,字体加粗,标题与标题之间产生一定的距离

  • 注意:在HTML中允许标签进行嵌套的,但是一般都包裹嵌套,而不可以进行交叉嵌套

2.3.3 格式化标签

  • <b>:字体加粗
  • <i>:字体倾斜
  • <del>:删除线
  • <u>:下划线

2.4 列表标记

  • ol:有序列表
    type=‘A’:字母排序
    type=‘I’:罗马排序
    start=“3” 序列从几开始

  • ul:无序列表
    type=“disc”:默认,实心圆
    type=“square”:方块
    type=“circle”:空心圆

2.5 图像标签

<img>它可以让我们在网页引入一张图片,常用属性:

  1. src 代表的图片的路径
  2. width 图片的宽度
  3. height 图片的高度
  4. border 用于设置图片的边框
  5. alt 如果图片不可以显示时,默认显示的文本信息
  6. title鼠标悬停图片上,默认显示的文本信息
  7. align 图片附件文字的对齐方式,可取值有
    -left:把图像对齐到左边
    -right:把图像对齐到右边
    -middle:把图像与中央对齐
    -top:把图像与顶部对齐
    -bottom:把图像与底部对齐(默认)

2.6 超连接标签

  • <a>标签,可以实现跳转到其它页面操作.超链接内容不仅可以是文本,也可以是图片等信息
  1. href 代表的我们要跳转的路径
  2. target 这个属性规定在何处打开这个链接文档,可取值:
    _ blank 在新窗口中打开页面
    _ self 默认。在本窗口打开页面

2.7 表格

  • <table>:定义一个表格

    -border:边框,取值是像素为单位
    -width 代表的表格的宽度
    -align 代表表格的对齐方式;取值left 左对齐表格,right 右对齐表格,center 居中对齐表格
    -cellspacing:单元格间距(通常设置0表示单线表格)

  • <tr>:表格中的行 (Table Row)

    -align 代表表格的对齐方式;取值
    left 左对齐内容(默认值)
    right 右对齐内容
    center 居中对齐内容(th 元素的默认值)

  • <td>:表格中的数据单元格 (Table DataCell)

    colspan 指示列的合并
    rowspan 指示行的合并

2.8 表单标签

  • 表单可以让我们将录入信息携带到服务器端。

2.8.1 form属性

action:整个表单提交的目的地
method:表单提交的方式

  • get:提交时,传输数据量少(传递普通文字信息,传递照片会失败),明文提交(在浏览器的url后面会显示提交的数据,不适合用于登录)
  • post:提交时,传输数据量大(传递文字和图片都行),密文提交(浏览器的url后面看不到提交的数据)

2.8.2 表单中的元素(控件)

  • <input>元素的type属性 text:默认值,普通的文本输入框,placeholder属性:提示文本,
    maxlength属性:最多能输入字符数量

  • password:密码输入框

  • checkbox:多选框/复选框 checked:被选中

  • radio:单选按钮

  • file:上传文件

  • reset:重置按钮

  • submit:提交按钮

  • button:普通按钮

  • <select>:下拉列表/下拉框,<option>:列表中的项,selected:被选中

  • <textarea>:文本域(多行文本框)
    可以通过 cols 和 rows 属性来规定 textarea 的尺寸,不过更好的办法是使用 CSS 的height和 width 属性。

  • <button>:按钮
    在form表单中,作用和submit一样
    不在form表单中,就是普通按钮(配合后期的javascript,可扩展性更高)

2.9 框架标签

  • 通过<frameset><frame>框架标签可以定制HTML页面布局。可以理解为:用多个页面拼装成一个页面。
  • 注意,框架标签和body标签不共存。“有你没我,有我没你”

2.10 其它标签与特殊字符

2.10.1<meta>标签

  • <meta>标签必须写在<head>标签之间.
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
  1. 当前页面的字符编码 gbk:中文简体
  2. 这里 的 名字 是 viewport (显示窗口)
    数据 是 文本 内容 content=“width=device-width, initial-scale=1.0”
    也就是 显示窗口 宽度 是 客户端的 屏幕 宽度 (就是 满屏 !),显示的文字和图形的初始比例 是1.0
  3. 每个电脑内置的IE版本是不一样的,为了兼容所有的版本以最高级模式渲染文档,也就是任何IE版
    本都以当前版本所支持的最高级标准模式渲染通过meta标签来设置页面加载后在指定的时间后跳转到指定的页面

2.10.2 <link>标签

  • 使用link标签来导入css,link标签也必须写在<head>标签中。

2.10.3 特殊字符

在这里插入图片描述

3.2 新增语义化标签

  • section标签:表示页面中的内容区域,部分,页面的主体部分
  • article标签:文章
  • aside标签:文章内容之外的,标题
  • header标签:头部,页眉,页面的顶部
  • hgroup标签:内容与标题的组合
  • nav标签:导航
  • figure标签:图文并茂
  • foot:页脚,页面的底部

3.3 媒体标签

  • src:媒体资源文件的位置
  • controls:控制面板
  • autoplay:自动播放(谷歌失效,360浏览器可以)
  • loop:循环播放

3.4 新增表单控件

  • <INPUT>,修改type属性:color:调色板,date:日历,month:月历,week:周历,
  • number:数值域:min:最小值(默认值是1,max:最大值(默认值无上限),step:递增量
    range:滑块search:搜索框(带×号,可一键删除框中内容)
  • 进度条<progress/>
  • 高亮<mark>
  • 联想输入框<datalist>(模糊查询) 选项 <option>

CSS

  • CSS是指层叠样式表 cascading style sheets
  • 通过CSS可以让我们定义HTML元素如何显示。
  • CSS可以让我们原本HTML不能描述的效果,通过CSS描述出来。
  • 通过CSS描述我们的html页面,可以让我们的页面更加漂亮,可以提高工作效率。

2.CSS与HTML结合方式

2.1 第一种方式 内联/行内样式

  • 就是在我们的HTML标签上通过style属性来引用CSS代码,优点:简单方便 ;缺点:只能对一个标签进行修饰。

2.2 第二种方式 内部样式表

  • 通过<style>标签来声明我们的CSS. 通常<style>标签我们推荐写在head和body之间,也就是“脖子”的位置
  • 优点:可以通过多个标签进行统一的样式设置缺点: 它只能在本页面上进行修饰.语法: 选择器 {属性:值;属性:值}

2.3 第三种方式 外部样式表

  • 需要单独定义一个CSS文件,注意CSS文件的后缀名就是.css在项目根目录下,创建css目录,
    在css目录中创建css文件 css01.css在<head>中使用<link>标签引用外部的css文件

关于外部导入css使用<link>与@import的区别?

  1. 加载顺序不同
  • @import方式导入会先加载html,然后才导入css样式,那么如果网络条件不好,就会先看到没有
    修饰的页面,然后才看到修饰后的页面。
  • 如果使用link方式,它会先加载样式表,也就是说,我们看到的直接就是修饰的页面;
  1. @import方式导入css样式,它是不支持javascript的动态修改的。而link支持。
    三种样式表的优先级:满足就近原则 : 内联 > 内部 > 外部

3.CSS的使用

3.1.1 元素(标签)选择器

  • 它可以对页面上相同的标签进行统一的设置,它描述的就是标签的名称.

3.1.2 类选择器

  • 类选择器在使用时使用"."来描述,它描述的是元素上的class属性值

3.1.3 id选择器

  • 它只能选择一个元素,使用 “#” 引入,引用的是元素的id属性值。id选择器,比类选择器更具有唯一性

3.1.4 选择器组

  • 逗号表示,谁和谁。例如,我有手机,你有手机,他也有手机,一条一条写太麻烦,就可以合并编写
我,你,他{ 手机 }

3.1.5 派生选择器

  • 子代:父子关系(隔代不管)
  • 后代:父子孙,曾孙,从孙…

3.1.6 CSS伪类

  • CSS伪类可对css的选择器添加一些特殊效果
  • 伪类属性列表:
    :active 向被激活的元素添加样式。
    :hover 当鼠标悬浮在元素上方时,向元素添加样式。
    :link 向未被访问的链接添加样式。
    :visited 向已被访问的链接添加样式。
    :first-child 向元素的第一个子元素添加样式。
  • 超链接的伪类:要遵守使用顺序,爱恨原则 LoVeHAte,lvha

3.2 CSS基本属性

3.2.1 文本属性

  • 指定字体:font-family : value;
  • 字体大小:font-size : value;px:像素,em:倍数
  • 字体加粗:font-weight : normal/bold;
  • 文本颜色:color : value;
  • 文本排列:text-align : left/right/center;
  • 文字修饰:text-decoration : none/underline;
  • 行高:line-height : value;
  • 首行文本缩进:text-indent : value (2em);

3.2.2 背景属性

  • CSS 允许应用纯色作为背景,也允许使用背景图像创建相当复杂的效果。

  • background-color 设置元素的背景颜色。

  • background-image 把图像设置为背景。

  • background-repeat 设置背景图像的墙纸效果,是否及如何重复
    repeat:在垂直方向和水平方向重复,为重复值
    repeat-x:仅在水平方向重复
    repeat-y:仅在垂直方向重复
    no-repeat:仅显示一次

  • background-position 设置背景图像的起始位置

  • 1:控制水平方向 x轴: 正值,向右移动; 负值,向左移动

  • 2:控制垂直方向 y轴: 正值,向下移动; 负值,向上移动

  • background-attachment 背景图像是否固定或者随着页面的其余部分滚动
    默认值是 scroll:默认情况下,背景会随文档滚动
    可取值为 fixed:背景图像固定,并不会随着页面的其余部分滚动,常用于实现称为水印的图像

3.2.3 列表属性

CSS列表属性作用如下:

  • 设置不同的列表项标记为有序列表
  • 设置不同的列表项标记为无序列表
  • 设置列表项标记为图像
    有两种类型的列表:
  • 无序列表 - 列表项标记用特殊图形(如小黑点、小方框等)
  • 有序列表 - 列表项的标记有数字或字母
    使用CSS,可以列出进一步的样式,并可用图像作列表项标记。
  • none:无标记。(去除标记)
  • disc:默认。标记是实心圆。
  • circle:标记是空心圆。
  • square:标记是实心方块。
  • decimal:标记是数字。
  • decimal-leading-zero:0开头的数字标记。(01, 02, 03, 等。)
  • lower-roman:小写罗马数字(i, ii, iii, iv, v, 等。)
  • upper-roman:大写罗马数字(I, II, III, IV, V, 等。)
  • lower-alpha:小写英文字母The marker is lower-alpha (a, b, c, d, e,等。)
  • upper-alpha:大写英文字母The marker is upper-alpha (A, B, C, D, E,等。)

3.2.4 边框属性

  • CSS边框属性允许你指定一个元素边框的样式和颜色。
  • border-style取值:
    none:默认无边框。
    dotted:定义一个点线边框。
    dashed:定义一个虚线边框。
    solid:定义实线边框。
    double:定义两个边框,两个边框的宽度和border-width的值相同。
    groove:定义3D沟槽边框。效果取决于边框的颜色值。
    ridge:定义3D脊边框,效果取决于边框的颜色值。
    insert:定义一个3D的嵌入边框。效果取决于边框的颜色值。
    outset:定义一个3D突出边框。效果取决于边框的颜色值。

3.2.5 轮廓属性

  • 轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。

轮廓和边框的区别:

  • 边框 (border) 可以是围绕元素内容和内边距的一条或多条线;
  • 轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。
  • CSS outline 属性规定元素轮廓的样式、颜色和宽度。

3.2.6 盒子模型

  • 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。
    CSS盒子模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。
    盒子模型允许我们在其它元素和周围元素边框之间的空间放置元素。
  • margin(外边距) - 盒子与盒子之间的距离
  • border(边框) - 盒子的保护壳
  • padding(内边距/填充) - 内填充,盒子边与内容之间的距离
  • content(内容) - 盒子的内容,显示的文本或图像

3.3 CSS定位

3.3.1 默认定位

  • 块级元素:h1~h6,p, div 等,自上而下,垂直排列(自动换行);可以改变宽高
  • 行内元素:a,b,span,等,从左向右,水平排列(不会换行);不能改变宽高
  • 行内块元素:input,img等,从左向右,水平排列(自动换行);可以改变宽高

3.3.2 浮动定位

  • 让元素“飞”起来。不仅可以靠着左边或右边。还可以消除“块级”的霸道特性(独自占一行)。
  • float取值:
    none :不浮动
    left:贴着左边 浮动
    right:贴着右边 浮动

3.3.3 相对定位

  • 和原来的位置进行比较,进行移动定位(偏移)

3.3.4 绝对定位

本元素与已定位的祖先元素的距离

  • 如果父级元素定位了,就以父级为参照物;
  • 如果父级没定位,找爷爷级,爷爷定位了,以爷爷为参照物。
  • 如果爷爷没定位,继续向上找,都没定位的话,body是最终选择

3.3.5 固定定位

  • 将元素的内容固定在页面的某个位置,当用户向下滚动页面时元素框并不随着移动

3.3.6 z-index

  • 如果有重叠元素,使用z轴属性,定义上下层次。
  • z轴属性,要配合相对或绝对定位来使用。
  • z值没有额定数值(整型就可以,具体用数字几,悉听尊便)

4. CSS3

4.1 圆角

  • border-radius:左上 右上 右下 左下;
  • border-radius:四个角;
  • border-radius:50%; 圆形

4.2 盒子阴影

  • box-shadow:1 2 3 4 5;
    1:水平偏移
    2:垂直偏移
    3:模糊半径
    4:扩张半径
    5:颜色

4.3 渐变

4.3.1 线性渐变

  • background:linear-gradient([方向/角度],颜色列表);

4.3.2 径向渐变

  • 以圆心向外发散

4.4 背景

4.4.1 背景位置

background-origin:指定了背景图像的位置区域

  • border-box : 背景贴边框的边
  • padding-box : 背景贴内边框的边
  • content-box : 背景贴内容的边

4.4.2 背景裁切

background-clip:

  • border-box 边框开切
  • padding-box 内边距开切
  • content-box 内容开切

4.4.3 背景大小

background-size:

  • cover 缩放成完全覆盖背景区域最小大小
  • contain 缩放成完全适应背景区域最大大小

4.5 过渡动画

4.5.1 过渡

  • 从一个状态到另一个状态,中间的“缓慢”过程;缺点是,控制不了中间某个时间点。
  • transition{1 2 3 4}
    1:过渡或动画模拟的css属性
    2:完成过渡所使用的时间(2s内完成)
    3:过渡函数。。。
    4:过渡开始出现的延迟时间

4.5.2 动画

  • 从一个状态到另一个状态,过程中每个时间点都可以控制。
  • 关键帧:@keyframes 动画帧 { from{} to{} } 或者{ 0%{} 20%{}… }
  • 动画属性:animation{ 1 , 2 , 3 , 4 , 5 }
    1:动画帧
    2:执行时间
    3:过渡函数
    4:动画执行的延迟(可省略)
    5:动画执行的次数

JavaScript

1.1 js的特点

  • 可以使用任何文本编辑工具编写,只需要浏览器就可以执行程序 (后面会学习不用浏览器也能运行)
  • 解释执行:事先不编译,逐行执行
  • 基于对象:内置大量现成对象
  • 适宜:客户端数据计算,客户端表单合法性验证,浏览器事件的触发,网页特殊显示效果制作

1.2 js的组成

  • ECMAScript:定义核心语法,关键字,运算符,数据类型等系列标准
  • DOM:文档对象模型,将一个html页面的所有节点看成是一个一个的对象。更有层次感的管理每一个节点。
  • BOM:浏览器对象模型,是对浏览器窗口进行访问和操作。使用 BOM,开发者可以移动窗口、改
    变状态栏中的文本以及执行其他与页面内容不直接相关的动作。使 BOM 独树一帜且又常常令人怀
    疑的地方在于,它只是 JavaScript 的一个部分,没有任何相关的准。

1.弹出新的浏览器窗口
2.移动、关闭浏览器窗口以及调整窗口大小
3.提供 Web 浏览器详细信息的定位对象
4.提供用户屏幕分辨率详细信息的屏幕对象
5.对 cookie 的支持
6.IE 扩展了 BOM,加入了 ActiveXObject 类,可以通过 JavaScript 实例化 ActiveX对象,进而
7.实现ajax局部刷新技术

2. HTML与javaScript结合方式

2.1.行内脚本

  1. 点击按钮(触发)
  2. 弹框(具体的操作)

2.2.内部脚本

  1. 使用<script></script>
  2. 标准是写在head和body之间(脖子位置),但其实只要写在html文件内部就可以,无论什么位置
    <html>外,<p></p>内部,都可以。

2.3.外部脚本

  1. 在项目根目录下创建一个目录js
  2. 在js目录中创建一个文件,后缀名是.js
  3. 在html页面中,使用

3. JavaScript的使用

3.1 变量

  • 因为js是弱类型语言,所以,在定义变量的时候,所有的数据类型都是var
  • 声明变量: var x ; var x,y;
  • 数值类型:number
    不区分整型数值和浮点型数值
    所有数字都采用 64 位浮点格式存储,类似于double 格式
  • 字符串:string
    首尾由单引号或双引号括起
  • 布尔类型:
    仅有两个值:true和false也代表1和0
    实际运算中true=1,false=0

3.1.1 自动类型转换

数字 + 字符串:数字转换为字符串                     10+’a’ -> 10a
数字 + 布尔值:true转换为1,false转换为0            true+5->6 
字符串 + 布尔值:布尔值转换为字符串true或false      true+’a’->truea 
布尔值 + 布尔值:布尔值转换为数值1或0               true+true->2

3.1.2 数据类型转换函数

  • parseInt:强制转换成整数
    如果不能转换,则返回 NaN (NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字)
    例如:parseInt(“6.32”)=6
  • parseFloat:强制转换成浮点数,如果不能转换,则返回 NaN例如:parseFloat(“6.32”)=6.32
  • typeof:查询数值当前类型,返回 string / number / boolean / object 。例如:typeof(“test”+3)==“string”

3.1.3 null 与 undefined

  • null 在程序中代表“无值”或者“无对象”,可以通过给一个变量赋值 null 来清除变量的内容
  • undefined,声明了变量但从未赋值或者对象属性不存在

3.1.4 算术运算

  • 加(+)、 减(-)、 乘( * ) 、除( / ) 、余数( % )
    可以表示减号,也可以表示负号,如:x = -y
    +可以表示加法,也可以用于字符串的连接
  • 递增( ++ ) 、递减( – ),i++ 相当于 i=i+1,i-- 相当于 i=i-1

3.1.5 关系运算

  • 严格相等:===,类型相同数值相同
  • 非严格相等:!==

3.1.6 逻辑运算

  • 逻辑非(!)、逻辑与(&&)、逻辑或(||)
  • 逻辑运算的操作数均为 boolean 表达式
  • 我要吃两碗拉面或者10个包子才能吃饱!问题是,我只吃两碗面,饱了! 我只吃10个包子,饱了
  • 我要吃两碗拉面并且10个包子才能吃饱!问题是,我只吃两碗面,没饱! 我只吃10个包子,没饱,

在这里插入图片描述

3.1.7 控制语句

if(关系表达式) { 
    // 语句块 1 
}else { 
    // 语句块 2 
}
if (表达式1) { 
    // 语句1; 
}else if (表达式2){ 
    // 语句2; 
}else if (表达式3){ 
    // 语句3; 
} else{ // 
    语句4;
}
switch (表达式) { 
    case 值1:
         // 语句1; 
       break; 
     case 值2:
          // 语句2; 
          break; 
      default: 
          // 语句4; 
      }
 for (var i=1 ; i<=5 ; i++){ 
        alert(i); 
          }
 while (条件){ 
        // 语句1; 
          ... 
          }

3.2 常用字符串API

  • length:获取字符串的长度(字符串中字符的个数) 属性,没有小括号
  • toUpperCase/toLowerCase :转大小写
  • charAt(下标) : 返回某个下标上的字符
  • indexof(字符):查找字符串中字符出现的首次下标
  • lastIndexof(字符):查找字符串中字符最后一次出现的下标
  • substring(开始,结束):截取字符串中一部分(结束是不包含的)
  • replace(旧的,新的):将字符串中的旧字符替换成新字符
  • split(分割的节点):一个字符串切割成N个小字符串,所以返回的是数组类型

3.3 数组

3.3.1 创建数组

var arr1 = new Array();

3.3.2 初始化数组的三种方式

// 第一种 
var arr1 = new Array(); 
arr1[0] = 110; 
arr1[1] = 119; 
arr1[2] = 120; 
// 第二种 
var arr1 = new Array(10,"a",true); 
// 第三种 
var arr1 = [10,"a",true]; 

for (var i = 0; i < arr1.length; i++) { 
console.log(arr1[i]); 
}

3.3.3 数组的常用方法

  • tostring():将数组转换成字符串
  • join(连接符号):将数组中的每个元素用连接符号连接成一个新的字符串。
  • concat(新元素):将原来的数组连接新元素,原数组不变。
  • slice(开始,结束):在数组中提取一部分,形成新的数组。
  • reverse():数组的反转(倒序)
  • sort():数组排序
  • arr.sort(func) 数值排序

3.4 Math数学对象

  • Math 对象用于执行数学任务
  • 没有构造函数 Math()
  • 无需创建,直接把 Math 作为对象使用就可以调用其所有属性和方法
    在这里插入图片描述

3.5 Number对象

  • Number.fixed(2); 自带四舍五入技能
    var n = new Number( 12.345 ); var n1 = n.toFixed(2); // 12.35,固定两位小数,第三位小数四舍五入 console.log( n1 ); var x = new Number( 12.3 ); var n2 = x.toFixed(2); // 12.30,固定两位小数,位数不够,0来补齐 console.log( n2 );

3.6 正则表达式

  • var reg1 = /^\d{3,6}$/; // 匹配纯数字3-6个
  • var reg2 = new RegExp(“^\d{3,6}$");

3.7 日期对象

var time = new Date(); 
console.log( time ); // Tue Jul 14 2020 11:09:46 GMT+0800 (中国标准时间) 
var year = time.getFullYear(); // 年份 
var month = time.getMonth() + 1; //月份从0开始,11结束,所以国内习惯要+1 
var day = time.getDate(); // 几号 
var hour = time.getHours(); // 几点 
var mm = time.getMinutes(); // 分钟 
var s = time.getSeconds(); //秒 
var ms = time.getMilliseconds(); // 毫秒, 1000毫秒 = 1秒 
var timestr = year+"年"+month+"月"+day+"号 "+hour+"点"+mm+"分"+s+"秒"+ms+"毫秒"; 
console.log( timestr );

3.8 函数

  • 使用关键字 function 定义函数
function 函数名( 形参列表 ){ 
// 函数体 return 返回值; 
}
  • 函数声明后不会立即执行,会在我们需要的时候调用到。
  • 注意:
    形参:一定不要带数据类型
    分号是用来分隔可执行JavaScript语句。 由于函数声明不是一个可执行语句,所以不以分号结束。

3.8.1 无返回值

function qiuhe(a, b) { 
    var he = a + b; 
    console.log("两数之和:" + he); 
}
qiuhe(3,4);

3.8.2 有返回值

function qiuhe(a, b) { 
    var he = a + b; 
    return "两数之和:" + he; 
}
var s = qiuhe(3,4); 
console.log( s );

3.8.3 参数对象

  • 在函数内部,调用参数列表的属性
function func(a,b,c){ 
    console.log( arguments.length ); // 获得参数的个数 
    console.log( arguments[1] ); // 获得下标为1的参数 
}

3.8.4 构造函数

  • 函数同样可以通过内置的 JavaScript 函数构造器(Function())定义
var myFunction = new Function("a", "b", "return a * b"); 
var x = myFunction(4, 3); 
console.log(x);
  • 注: 上述函数以分号结尾,因为它是一个执行语句。

3.8.5 匿名函数

  • 没有名称的函数
var fn = function(a, b) {// 没有名字的函数,应该用一个变量来接收 
    return a * 10 + b; 
};
console.log( fn(3, 4) );

3.8.6 全局函数

  • isNaN:检查其参数是否是非数字值
console.log( isNaN( 123 ) ); // 数字,false 
console.log( isNaN( "hello" ) ); // 非数字,true 
console.log( isNaN( 4-1 ) ); // 数字,false 
console.log( isNaN( 123 ) ); // 数字,false 
console.log( isNaN( -10 ) ); // 数字,false 
console.log( isNaN( "123" ) ); // 数字,false 
console.log( isNaN( "1a23" ) ); // 非数字,true
  • eval:用来转换字符串中的运算
var str = "1+3"; 
console.log( str ); // 1+3 , +会认定为一种字符符号而已,没有加法的作用 
console.log( eval( str ) ); // 让字符串中的运算符号生效
  • encodeURI 与 decodeURI
var name = "拉勾网"; 
console.log( "转码前:" + name ); 
name = encodeURI(name); 
console.log( "转码后:" + name ); 
name = decodeURI(name); 
console.log( "解码后:" + name );

3.8.7 闭包

1、闭包的概念:指有权访问另一个函数作用域中的变量的函数,一般情况就是在一个函数中包含另一个函数。
2、闭包的作用:访问函数内部变量、保持函数在环境中一直存在,不会被垃圾回收机制处理;
简单地说:就是在函数的局部范围内声明一个封闭的环境,此环境不会被垃圾回收探测到。
保证了数据的安全唯一性

a = 10; // 全局变量,声明的时候可以不使用var 
    function test1(){ 
    b = 20; // 不适用var声明的变量,就是全局变量 
    var c = 30; // 用var声明,并且在函数的内部。这样的变量叫做局部变量,有效范围只能 在其声明的函数内部 
    console.log(c); 
    }
    
    function test2(){ 
        console.log(c); //c is not defined (c变量没有定义) 
    }
    test1(); 
    test2();

需求:统计方法执行了多少次

var count = 0; // 总次数 
function test1(){ 
    count++; // 自增+1 
    }
    test1(); 
    test1(); 
    test1(); 
    console.log( count );
  • 闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不 受外界干扰。
    直观的说就是形成一个不销毁的栈环境。
  • 闭包的优点: 方便调用上下文中声明的局部变量 逻辑紧密,可以在一个函数中再创建个函数,避
    免了传参的问题
  • 闭包的缺点: 因为使用闭包,可以使函数在执行完后不被销毁,保留在内存中,如果大量使用闭
    包就会造 成内存泄露,内存消耗很大

3.9 弹框输出

  • 普通弹框 alert(“hello,拉勾”);
  • 控制台日志输出 console.log(“谷歌浏览器按F12进入控制台”);
  • 页面输出 document.write(“<h2>我爱你中国</h2>”); 将<h2>元素输出到<body>
  • 确认框 confirm(“确定删除吗?”);
var b = confirm("确定删除吗?"); 
if(b){
    document.write( "<h1>删除成功!</h1>" ); 
}else{
    document.write( "<h1>你取消了操作</h1>" ); 
}
  • 输入框 prompt(“请输入姓名:”);

4.DOM 操作

  • 在一个html页面中,会使用很多标签来规划制作页面。
  • 文档对象模型,就是将页面中所有的标签元素都看成是一个对象(一片叶子),主树干定义为根节点(根元素),
    所有的标签都是从根元素延伸出去的,摸清结构,找到某个标签就不再困难了
    -在节点树中,顶端节点就是根节点(root)
    -每个节点都有父节点(除了根节点)
    -任何一个节点都可以拥有任意数量的子节点
    -同胞是拥有相同父节点的节点
<html>
    <head>
        <meta charset="utf-8"> 
        <title>DOM 教程</title> 
    </head> 
    <body>
        <h1>第一节:HTML DOM</h1> 
        <p>Hello world!</p> 
    </body>
</html>

从上面的 HTML 中:

  • <html>节点没有父节点;它是根节点
  • <head><body>的父节点是 <html> 节点
  • 文本节点 “Hello world!” 的父节点是<p>节点
    并且:
  • <html>节点拥有两个子节点:<head><body>
  • <head> 节点拥有两个子节点:<meta><title> 节点
  • <title> 节点也拥有一个子节点:文本节点 “DOM 教程”<h1><p>节点是同胞节点,同时也是
    <body> 的子节点
    并且:
  • <head> 元素是 <html> 元素的首个子节点
  • <body> 元素是 <html> 元素的最后一个子节点
  • <h1> 元素是 <body> 元素的首个子节点
  • <p> 元素是 <body> 元素的最后一个子节点
    js为我们提供了很多种方法来实现在页面找查找某个元素节点

4.1 DOM访问

  • getElementById:通过id属性获得元素节点对象
  • 案例:当帐号为空时,阻止表单提交
<body>
    <form action="xxx" onsubmit="return login()"> 
      <p>帐号:<input id="username"/></p> 
      <p>电话:<input id="phone"/></p> 
      <p><button>登录</button></p> 
    </form> 
    <script> 
      function login() { 
        var name = document.getElementById("username").value ; 
        if(name == ""){ 
          alert("帐号不能为空!"); 
          return false; // 阻止表单的提交 
        }
        return true; // 放行,让表单提交 
    } 
    </script> 
</body>
  • getElementsByName:通过name属性获得元素节点对象集
  • 案例:购物车全选效果
<body>

<h2>我的购物车</h2> 

<table border="1" cellspacing="0"> 

<tr>

<td><input type="checkbox" onchange="quan(this)" /> 全选</td> 

<td>名称</td> 

<td>单价</td> 

</tr> 

<tr>

<td><input type="checkbox" name="one" />1</td> 

<td>功能性饮料-尖叫</td> 

<td>4.0</td> 

</tr> 

<tr>

<td><input type="checkbox" name="one" />2</td> 

<td>火腿肠</td> 

<td>2.0</td> 

</tr> 

<tr>

<td><input type="checkbox" name="one" />3</td> 

<td>包子</td> 

<td>1.5</td> 

</tr> 

</table> 

<p>

<button>提交订单</button> 

</p> 

<script> 

function quan(all) { 

var arr = document.getElementsByName("one"); 

for (var i = 0; i < arr.length; i++) { 

arr[i].checked = all.checked; // 将全选框的状态,赋值给每一个复选框 

} 

} 

</script> 

</body>
  • getElementsByTagName:通过标签名称获得元素节点对象集
  • 案例:表格隔行变色
<body>

<table border="1" cellspacing="0"> 

<tr>

<td><input type="checkbox" onchange="quan(this)" /> 全选</td> 

<td>名称</td> 

<td>单价</td> 

</tr> 

<tr>

<td><input type="checkbox" name="one" />1</td> 

<td>功能性饮料-尖叫</td> 

<td>4.0</td>**4.2 DOM****修改**

修改 HTML DOM 意味着许多不同的方面:

改变 HTML 内容

改变 CSS 样式

改变 HTML 属性

创建新的 HTML 元素

删除已有的 HTML 元素

改变事件(处理程序)

\1. 改变一个 <h2> 元素的 HTML 内容 :

\2. 改变一个<h2>HTML 样式

</tr> 

<tr>

<td><input type="checkbox" name="one" />2</td> 

<td>火腿肠</td> 

<td>2.0</td> 

</tr> 

<tr>

<td><input type="checkbox" name="one" />3</td> 

<td>包子</td> 

<td>1.5</td> 

</table> 

<script> 

var rows = document.getElementsByTagName("tr"); //通过标签名获得元素对象 

集合 

for (var i = 0; i < rows.length; i++) { 

if(i % 2 == 1){ // 奇数 

rows[i].style.backgroundColor = "pink"; 

} 

} 

</script> 

</body> 

4.2 DOM修改

  • 修改 HTML DOM 意味着许多不同的方面:
    改变 HTML 内容
    改变 CSS 样式
    改变 HTML 属性
    创建新的 HTML 元素
    删除已有的 HTML 元素
    改变事件(处理程序)
  1. 改变一个<h2>元素的 HTML 内容 :
<body>

<button onclick="test()">点我试试</button> 

<script> 

function test(){ 

document.getElementById("hello").innerHTML = "走哇,喝点去~!"; 

} 

</script> 

<h2 id="hello">你好!</h2> 

</body
  1. 改变一个<h2>的 HTML 样式
<body>

<button onclick="chou()">你瞅啥</button> 

<script> 

function chou(){ 

document.getElementById("hello").style.color = "red"; 

document.getElementById("hello").style.fontFamily = "华文彩云"; 

} 

</script> 

<h2 id="hello">你好!</h2> 

</body

4.2.1 添加节点

  • 点击按钮,在页面中创建一张图片
<body>

<button onclick="add()">添加</button> 

<div></div> 

<script> 

function add(){ 

var img = document.createElement("img"); // <img> 

img.setAttribute("src","../lagou-html/img/cat.gif"); // <img 

src="../lagou-html/img/cat.gif"> 

img.setAttribute("title","小猫咪"); // <img src="../lagou- 

html/img/cat.gif" title="小猫咪"> 

img.setAttribute("id","cat"); // <img src="../lagou- 

html/img/cat.gif" title="小猫咪" id="cat"> 

var divs = document.getElementsByTagName("div"); 

divs[0].appendChild(img); 

} 

</script> 

</body> 

4.2.2 删除节点

  • 点击按钮,把上面刚创建的图片从页面上删除
<body>
    <button onclick="add()">添加</button> 
    <button onclick="del()">删除</button> 
    <div> 
    </div> 
    <script> 
    function add(){ 
        。。。略。。。 
    }function del(){ 
        var img = document.getElementById("cat"); 
        img.parentNode.removeChild(img); // 必须通过父节点,才能删除子节点
} 
    </script>
</body

4.2.3 替换节点

  • 点击按钮,把上面刚创建的图片替换成另一张
<body>
    <button onclick="add()">添加</button> 
    <button onclick="del()">删除</button> 
    <button onclick="rep()">替换</button> 
    <div> 
    </div> 
    <script> 
        function add(){ 
          。。。略。。。 
        }
        function del(){ 
          。。。略。。。 
        }function rep(){ 
           var imgold = document.getElementById("cat"); 
           // 通过修改元素的属性,做的替换 
           // img.setAttribute("src","../lagou-html/img/2.jpg"); 
           
           var imgnew = document.createElement("img"); 
           imgnew.setAttribute("src","../lagou-html/img/1.jpg"); 
           imgold.parentNode.replaceChild( imgnew, imgold ); 
        } 
     </script> 
 </body>

4.3 事件

js捕获某个动作而做出的反馈
HTML 事件的例子:

  • 当用户点击鼠标时
  • 当网页已加载时
  • 当图片已加载时
  • 当鼠标移动到元素上时
  • 当输入字段被改变时
  • 当 HTML 表单被提交时
  • 当用户触发按键时

4.3.1 窗口事件 (Window Events)

仅在 body 和 frameset 元素中有效。

  • onload 当文档被载入时执行脚本
<body onload="test()"> 
  <script> 
    function test() { 
      document.write("哈哈哈哈"); 
    } 
  </script> 
</body>

4.3.2 表单元素事件 (Form Element Events)
仅在表单元素中有效。

  • onblur 当元素失去焦点时执行脚本
  • onfocus 当元素获得焦点时执行脚本
<body>
    <script> 
      function a() { 
        console.log("获得焦点==被激活"); 
        }
        function b() { 
          console.log("失去焦点"); 
        } 
        </script> 
        <form action=""> 
          <p>帐号:<input onfocus="a()" onblur="b()" /></p> 
          <p>密码:<input /></p> 
    </form> 
</body>

4.3.3 鼠标事件 (Mouse Events)

  • onclick 当鼠标被单击时执行脚本
  • ondblclick 当鼠标被双击时执行脚本
  • onmouseout 当鼠标指针移出某元素时执行脚本
  • onmouseover 当鼠标指针悬停于某元素之上时执行脚本
<style> 
    img{width: 30%; 
    border: 5px solid white;

    } 
</style> 
<body>

    <img src="img/logo.png" onmouseover="shang(this)" onmouseout="xia(this)" 
onclick="dan()"> 
    <img src="img/logo.png" onmouseover="shang(this)" onmouseout="xia(this)" 
ondblclick="shuang()"> 
    <img src="img/logo.png" onmouseover="shang(this)" onmouseout="xia(this)" > 
    <script> 
        function dan(){ 
            alert("点了一下"); }
        function shuang(){ 
            alert("连续快读点两下"); 
        }
        function shang(img){ 
            img.style.border = "5px solid red"; 
        }
        function xia(img){ 
            img.style.border = "5px solid white"; } 
        </script> 
</body>

4.3.4 键盘事件

  • onkeydown 按下去
  • onkeyup 弹上来
<script> 
    window.onkeydown = function(){ 
        // event:事件源(按键) 
        // console.log( "按键编码:"+event.keyCode ); 
        if(event.keyCode == "13"){ // 回车键 
            alert("登录成功!"); 
        } 
    }
    window.onkeyup = function(){ 
        console.log(event.keyCode); // 按住按键不松手是不会触发的。当松手时,按键回弹则 触发 
    } 
</script>

4.3.5 事件冒泡

  • 创建两个div,一个大一些,一个小一些
<style> 
    #father { 
      width: 200px;
      height: 200px; 
      background: black; 
      padding: 10px; 
      }
    #child { 
    width: 100px; 
    height: 100px; 
    background: greenyellow; 
    } 
</style> 

<body>
    <div id="father"> 
      <div id="child"></div> 
      </div> 
      <script> 
      // 代码不重要,重要是知道这个事件发生,是正常现象 
      document.getElementById("father").addEventListener("click", function() { alert("父级元素的事件被触发:" + this.id); 
      }); 
      document.getElementById("child").addEventListener("click", function(e) { e.stopPropagation() //取消事件的冒泡机制 alert("子级元素的事件被触发:" + this.id); }); 
    </script> 
</body>
  • 先子,后父。事件的触发顺序自内向外,这就是事件冒泡;

4.3.6 事件捕获

  • 还是刚才创建两个div,一个大一些,一个小一些
<style>
   #father { 
     width: 200px; 
     height: 200px; 
     background: black; 
     padding: 10px; 
   }
   #child { 
     width: 100px; 
     height: 100px; 
     background: greenyellow; 
   } 
</style> 
<body> 
  <div id="father"> 
    <div id="child"></div> 
    </div>
    <script> 
    document.getElementById("father").addEventListener("click",function(){ 
    alert("父级:" + this.id); 
    },true); 
    document.getElementById("child").addEventListener("click",function(){ 
    alert("子级:" + this.id); 
    },true); 
    </script> 
</body>
  • 先父,后子。事件触发顺序变更为自外向内,这就是事件捕获;

4.4 面向对象OOP

  • 使用Object创建通用对象
var user = new Object(); 
user.name = "吕布"; 
user.age = 21; 
user.say = function(){ 
    console.log("大家好,我叫:"+this.name+",我今年"+this.age+"岁了!"); 
}

user.say();

var dog = new Object(); 
dog.nickname = "屎尿多"; 
dog.wang = function(){ 
console.log("我饿了,我要拆家了!"); 
}
dog.wang();
  • 使用构造函数
function userinfo(name , age){ 
    this.name = name; this.age = age; 
    this.say = function(){ 
        console.log("大家好,我叫:"+this.name+",我今年"+this.age+"岁了!"); 
    } 
}
var user = new userinfo("詹姆斯",35); 
user.say();
  • 使用直接量
var user = {
    username : "孙悟空", 
    age : 527, 
    say : function(){ 
         console.log("大家好,我叫:"+this.username+",我今年"+this.age+"岁了!"); 
         } 
     };
user.say();

4.5 JSON

  • JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
  • 易于人阅读和编写,同时也易于机器解析和生成
    {
    属性1:值1,
    属性2:值2,
    。。。。
    }
<script> 
    var json1 = { username: "吕布", age: 31 }; 
    console.log("姓名:" + json1.username + ",年龄:" + json1.age + "岁"); 
    
    // json数组 
    var josnarr = [{ name: "貂蝉", age: 18 }, { name: "小乔", age: 17 }]; 
    console.log("貂蝉" + josnarr[0].age + "岁了"); 
    console.log("小乔" + josnarr[1].age + "岁了"); 
    
    // 复杂的json对象 
    var long = { 
        name: "赵云", 
        sex: "男", 
        hobby: ["玉兰白龙驹", "龙胆亮银枪", "青釭剑"] 
        };
        console.log(long.name + "的主攻武器:" + long.hobby[1]); 
   </script>

5. BOM操作

5.1 window对象

在这里插入图片描述

<button onclick="kai()">极速入职</button> 
<script> 
    function kai(){ 
        window.open("http://lagou.com" , "拉勾网" , 
"width=500,height=300,left=400"); 
         // window.open("http://lagou.com" , "拉勾网" , "fullscreen=yes"); // IE才 生效
 }
 </script>

5.1.1 screen屏幕对象

  • 我想知道我的电脑屏幕多大?实际上,得到的就是分辨率
<body> 
  <button onclick="kai()">求大小</button> 
</body> 
<script> 
  function kai() { 
    alert(window.screen.width + "|" + window.screen.height); 
  } 
</script>

5.1.2 location定位

  • 包含有关当前 URL 的信息,通常用来做页面跳转
<button onclick="test()">测试</button> 
<script> 
    function test(){ 
        console.log( "当前页面的URL路径地址:"+ location.href ); 
        location.reload(); // 重新加载当前页面(刷新) 
        location.href = "http://lagou.com"; // 
        跳转页面 
        } 
</script>

5.1.3 history浏览器历史

  • history对象会记录浏览器的痕迹
  • a.html
<a href="b.html">去b页面</a>
  • b.html
<button onclick="hui()">返回</button> 
<script> 
    function hui(){ 
        //history.go(-1); //上一级页面 
        history.back(); // 与go(-1)是等价的 
        } 
</script>

5.1.4 navigator 导航(了解)

  • window.navigator 对象包含有关访问者浏览器的信息;
<script> 
    var str = ""; str += "<p>浏览器的代号:"+ navigator.appCodeName +"</p>"; 
    str += "<p>浏览器的名称:"+ navigator.appName+"</p>"; 
    str += "<p>浏览器的版本:"+ navigator.appVersion+"</p>"; 
    str += "<p>硬件平台:"+ navigator.platform+"</p>";
    str += "<p>用户代理:"+ navigator.userAgent +"</p>"; 
    str += "<p>启用Cookies:"+navigator.cookieEnabled+"</p>";
    document.write(str); 
</script>

5.1.5 存储对象

  • 用起来和我们在java中map很相似,都是键值对的方式存数据

5.1.5.1 本地存储 localStorage

  • 保存数据
localStorage.setItem("name","curry");
  • 提取数据
localStorage.getItem("name");
  • 删除数据
localStorage.removeItem("name");

多样化操作

// 三种方式保存数据 
localStorage["a"] = 1; 
localStorage.b = 2; 
localStorage.setItem("c",3); 
// 查看数据类型 
console.log( typeof localStorage["a"] ) 
console.log( typeof localStorage["b"] ) 
console.log( typeof localStorage["c"] ) 

// 第一种方式读取 
var a = localStorage.a; 
console.log(a); 

// 第二种方式读取 
var b = localStorage["b"]; 
console.log(b); 

// 第三种方式读取 
var c = localStorage.getItem("c"); 
console.log(c);

5.1.5.2 会话存储 sessionStorage

  • 会话,就是保持浏览器别关闭。关闭浏览就等于结束了一次会话。开启浏览器就意味着创建了一次会话。
  • 保存数据
sessionStorage.setItem("name", "klay");
  • 提取数据
var lastname = sessionStorage.getItem("name");
  • 删除指定键的数据
sessionStorage.removeItem("name");
  • 删除所有数据
sessionStorage.clear();

案例:记录点击了几下按钮

<button onclick="dian()">点我</button> 
<h3 id="result"></h3> 
<script> 
  function dian(){ 
       if( sessionStorage.getItem("clickCount") ){
          sessionStorage.setItem("clickCount", 
Number(sessionStorage.getItem("clickCount")) + 1); 
       }else{
          sessionStorage.setItem("clickCount", 1); 
      }
      document.getElementById("result").innerHTML = "已经点击了"+ sessionStorage.getItem("clickCount") +"次!" 
      } 
</script>

5.2 计时操作

5.2.1 周期性定时器 setInterval

setInterval(1,2):周期性触发代码exp (常用)
1:执行语句
2:时间周期,单位为毫秒

  • 案例:闪烁的字体 (1秒1变色)
<body>
    <h1 id="title">拉勾网:极速入职</h1> 
    <script>
       var colors = ["red","blue","yellow","pink","orange","black"]; 
       var i = 0; 
       function bian(){ 
         document.getElementById("title").style.color = colors[i++]; 
         if(i == colors.length){ 
             i = 0; // 颜色重新开始 
           } 
         }setInterval(bian,100); // 每隔0.1秒,执行一次bian函数 
     </script> 
 </body>
  • 案例:在闪烁字体的基础上扩展,闪烁的电子时钟
<body>
  <h1 id="title"></h1> 
  <script> 
    var colors = ["red","blue","yellow","pink","orange","black"]; 
    var i = 0; 
    function bian(){ 
      document.getElementById("title").style.color = colors[i++]; 
      if(i == colors.length){ 
      i = 0; // 颜色重新开始 
      } 
    }
    function time(){ 
        var d = new Date(); 
        var str = d.getFullYear()+"年"+(d.getMonth()+1)+"月"+d.getDate()+"号 "+d.getHours()+"点"+d.getMinutes()+"分"+d.getSeconds()+"秒"; 
        document.getElementById("title").innerHTML = str; 
        }
        setInterval(bian,100); // 每隔1秒,执行一次变色函数bian 
        setInterval(time,1000); // 每隔1秒,执行一次时间函数time 
    </script> 
  </body>

5.2.2 停止定时器 clearInterval

案例:模拟年会抽奖

<body>
    <img id="tu" src="../lagou-html/img/1.jpg" width="50%" /> 
    <br /> 
    <button onclick="begin()">开始</button> 
    <button onclick="stop()">停止</button> 
    <script> 
      var arr = ["1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg"]; 
      function begin() { 
        timer = setInterval(bian, 100); // 没有使用var,所以timer是全局变量
       }
       function stop() { 
         clearInterval(timer); // 停止定时器 
         }
         function bian() { 
         var i = Math.floor(Math.random() * arr.length); // 0-4 
         document.getElementById("tu").src = "../lagou-html/img/" + arr[i]; 
         } 
    </script> 
</body>

5.2.3 一次性定时器 setTimeout

相当于延迟的效果,只执行一次

<script> 
    function bian(){ 
        document.body.style.backgroundColor = "red"; 
    }//3秒之后调用 
    setTimeout(bian,3000); 
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值