文章目录

  • 1 HTML
    • 1.1 HTML简述
    • 1.1.2 常用基本标签
    • 1.1.3 表格
    • 1.1.4 表单(重点)
      • 表单小结
    • HTML小结
  • 2 CSS样式表
    • 2.1 三种格式修改样式
      • 2.1.1 行内样式(尽量不用)
      • 2.1.2 内部样式
      • 2.1.3 外部样式(最佳办法)
    • 2.2 常见的选择器
    • 2.3 常见的背景样式属性
    • CSS样式表小结
  • 3 JavaScript
    • 3.1 JavaScript基本概念
      • 3.1.1 什么是JavaScript?
      • 3.1.2 JavaScript特点
      • 3.1.3 js和java的区别
      • 3.1.4 JavaScript核心
    • 3.2 JavaScript基础语法
      • 3.2.1 如何在网页中写JavaScript(重点)
      • 3.2.2 JavaScript语法(重点)
      • 3.2.3 JavaScript的数据类型
      • 3.2.4 变量的定义与使用
      • 3.2.5 赋值运算符
    • 3.3 JavaScript流程控制
      • 3.3.1 if语句
      • 3.3.2 switch语句
      • 3.3.3 for语句
      • 3.3.4 while语句
      • 3.3.5 do-while语句
    • 3.4 函数
      • 3.4.1 函数的定义
      • 3.4.2 函数的调用
      • 3.4.3 匿名函数
      • 3.4.4 全局函数
    • 3.5 事件
      • 3.5.1 常见的事件
      • 3.5.2 事件处理
    • 3.6 正则表达式
    • 3.7 Cookies
      • 3.7.1 创建cookie
      • 3.7.2 读取 cookie
      • 3.7.3 改变 cookie
      • 3.7.4 删除 cookie
      • 3.7.5 cookie 字符串
      • 3.7.6 JavaScript Cookie 实例
      • JavaScript小结
  • 总结

1 HTML

1.1 HTML简述

HTML概念
HTML (Hyper Text Markup Language超文本标识语言),是一种用来制作超文本文档的简单标记语言。
用HTML编写的超文本文件称为HTML文件,也称Web文件。
HTML是Web开发的基本技术。

HTML文件的基本结构

<html><head><title></title></head><body></body>
</html>

<html>……< /html> 标签标记HTML文档的开始和结束。
<head> < /head> 头部部分。
<title></ title> 网页标题。
<body>< /body> 网页内容,可以是文本。图像等。

例如:

<html><head><title></title></head><body>这是我的第一个页面!</body>
</html>

HTML标签
HTML 标记标签通常被称为HTML标签(HTML tag)。
HTML标签是由尖括号包围的关键词。比如<html>
HTML标签通常是成对出现的,比如<b></b>
标签对中的第一个标签是开始标签,第二个标签是结束标签。
开始和结束标签也被称为开放标签和闭合标签。

HTML元素
HTML元素指的是从开始标签到结束标签的所有代码,是HTML语言的基本部分。HTML文档由嵌套的HTML元素构成。html标签里面有head元素、title元素和boby元素。
空的HTML元素。没有内容的HTML元素被称为空元素。空元素是在开始标签中关闭的。<br>(定义换行的标签)就是没有关闭标签的空元素。

HTML元素属性
HTML元素可以有自己的相关属性,属性为HTML元素提供附加信息。属性通常添加在元素的开始标签当中,属性值带双引号。
例:

 <h1 align="center">This is heading 1</h1>

页面背景色或背景图像


<!---设置背景颜色-->
<body  bgcolor="red" >
</body>
<!---设置背景照片-->
<body  background="./picture/2.png" >
</body>

1.1.2 常用基本标签

常用基本标签分为有块元素和行内元素。

块元素
块元素,在页面中独占一行的元素称为块元素(block element)。
块元素包括标题、段落、换行、链接、图像、注释和嵌入元素(音频、视频)。
1 标题
在网页中HTML专门用来负责网页的结构,所以在使用html标签中,应该关注的是标签的语义,而不是它的样式。
标题标签:
h1~h6 一共六级标题;
h1最重要,h6最不重要;
h1在网页中的重要性仅次于title标签;
一般情况下标题标签只会使用h1~ h 3,h 4~h 6很少使用。
标题标签都是块元素,在页面中独占一行的元素称为块元素(block element)。

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head><body><h1>一级标题</h1><h2>二级标题</h2><h3>三级标题</h3><h4>四级标题</h4><h5>五级标题</h5><h6>六级标题</h6>
</body>
</html>

运行结果如下:

2 段落
在p标签中的内容就表示一个段落。属于块元素。

    <p>在p标签中的内容就表示一个段落</p><p>在p标签中的内容就表示一个段落</p>


p标签和平标签之间有换行的效果。
p标签还有align属性。该属性有right、left和center属性值。

3 换行
br换行。

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head><body>
今天天气很好<br>
今天心情很好
</body>
</html>

4 链接
超链接可以让我们从一个页面跳转到其他页面,或者是当前页面的其他位置。
href属性
href指定跳转的目标路径,值可以是一个外部网站的地址,也可以是一个内部页面的地址。
超链接是一个行内元素,在a标签中可以嵌套除它自身外的任何元素。
href属性值为#,回到当前页面的顶部。 这样点击超链接以后页面不会发生跳转,还是在当前的页面。

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body>
<a href="http://www.baidu.com">点击跳转百度</a>
<a href="sucess.html">点击跳转内部页面</a>
<a href="#">回到顶部</a>
</body>
</html>

target属性
用于指定超链接打开的位置
属性值:_self 默认值 在当前页面中打开超链接,即刷掉当前页面,转跳到指定链接;_blank 在一个新的页面中打开超链接。
_blank属性值例子如下:

5 图像
使用img标签来引入外部图片,img标签是一个自结束标签。
img这种元素属于替换元素(块元素和行内元素之间,具有两种元素的特点)
属性:
src属性指定的是外部图片的路径。该图片可以是项目里的照片,也可以是网上的照片。
alt属性图片的描述,这个描述默认情况下不会显示,有些浏览器在图片无法加载是显示,搜索引擎会根据alt中的内容来识别图片。
width图片的宽度(单位是像素)。
height图片的高度,宽度和高度如果值修改了一个,则另一个会等比例缩放。

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head><body><img src="./picture/1-1.jpg" alt="分词" width="500"><img src="https://img1.baidu.com/it/u=4264004400,2710433939&fm=26&fmt=auto&gp=0.jpg" alt="保时捷">
</body>
</html>

注意:
一般情况在pc端,不建议修改图片的大小,需要多大的图片就裁多大,但在移动端经常需要对图片进行缩放(大图缩小)

图片格式
jpeg(jpg)
支持的颜色比较丰富,不支持透明效果,不支持动图;一般用来显示照片。
gif
支持的颜色比较少,支持简单透明,支持动图;颜色单一的图片,动图。
png
支持的颜色丰富,支持复杂透明,不支持动图;专为网页而生
webp
这种格式是谷歌新推出的专门用来表示网页中的图片的一种格式,它具备其他图片格式的所有优点,而且文件还特别小;缺点:兼容性不好。
原则:效果一样,用小的,效果不一样,用效果好的!
base64(类似加密技术)
将图片使用base64编码,这样可以将图片转换为字符,通过字符的形式来引入图片;一般都是一些需要和网页一起加载的图片才会使用base64。
问:如何将图片转换为base64?
第一,上百度搜索 base64在线图片;第二,把照片转换为base64码;第三,将base64码复制到src属性的属性值里面。

6 注释
作用:注释中的内容会被浏览器忽略,不会在网页中直接显示,但是可以在源码中查看注释,注释用来对代码进行解释说明的;开发中一定要养成良好的编写注释的习惯,注释要求简单明了;注释还可以将一些不希望显示的内容隐藏。
注:
注释不能嵌套!!
7 嵌入元素(音频、视频)
音频可以使用audio标签,source标签和embed标签。
audio 标签用来向页面中引入一个外部的音频文件,音视频文件引入时,默认情况下不允许用户自己控制播放停止。
audio 标签的属性:
controls 是否允许用户控制播放
autoplay 音频文件是否自动播放,如果设置了autoplay ,则音乐在打开页面时会自动播放,但是目前大部分浏览器都不会自动对音乐进行播放。
loop 音乐是否循环播放。

例子:

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head><body><audio src="./picture/邓园长 说好的幸福呢.mp3" controls  loop></audio>
</body>
</html>

效果如下:

使用source标签

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head><body><audio controls autoplay><source src="./picture/邓园长 说好的幸福呢.mp3"><source src="./picture/邓园长 说好的幸福呢.agg"></audio>
</body>
</html>

mp3格式适应大多数浏览器。
agg格式音频适应ios系统浏览器。
此外,还有embed 标签用来适应旧的浏览器(ie 8),ie 8无法识别audio标签。
综上,得出适应所有浏览器的音频播放,如下:

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head><body><audio controls autoplay><source src="./picture/邓园长 说好的幸福呢.mp3"><source src="./picture/邓园长 说好的幸福呢.agg"><embed src="./picture/邓园长 说好的幸福呢.mp3" type="audio/mp3"></audio>
</body>
</html>

视频
使用video标签来向网页中引入一个视频,使用方法和audio基本是一样的。
引用本地的视频,将视频放到项目中

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head><body><video controls autoplay><source src="./picture/杨千嬅 可惜我是水瓶座 .mp4"></video>
</body>
</html>

引用外部视频,找到视频的嵌入代码,

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head><body><iframe src="//player.bilibili.com/player.html?aid=803421388&bvid=BV1ey4y137C6&cid=350369745&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true > </iframe>
</body>
</html>

运行结果如下:

行内元素
加粗
格式如下:

<b>xxxx</b>

大号
格式如下:

<big>xxxx</big>

小号
格式如下:

<small>xxxx</small>

着重文字
格式如下:

<em>xxxx</em>

斜体标签
格式如下:

<i>xxxx</i>

删除标签
格式如下:

<del>xxxx</del>

下划线标签
格式如下:

<ins>xxxx</ins>

上标
格式如下:

<sup>xxxx</sup>

下标
格式如下:

<sub>xxxx</sub>

修饰标签
格式如下:

<font color="" size="">xxxx</font>
<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head><body>今天天气<b>很好</b><br><br>今天天气<small>很好</small><br><br>今天天气<em>很好</em><br><br>今天天气<i>很好</i><br><br>3 <sup>2</sup>=9<br><br>H<sub>2</sub>O<br><br><font color="red" size="10px">今天天气很好</font>
</body>
</html>

效果如下:

1.1.3 表格

表格由<table>标签来定义。
每个表格均有若干行(由<tr>标签定义),每行被分割为若干单元格(由<td>标签定义)。
字母td指表格数据(table data),即数据单元格的内容。数据单元格可以包含文本、图片、列表、段落、表单、水平线、表格等等。
三个元素必须一起使用,否则无法定义表格。

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body>
<table border="3"><section>乘法表</section>   <th>1</th><th>2</th><th>3</th><tr><!-- 第一行 --><td>1*1=1</td><td></td><td></td></tr><tr><!-- 第二行 --><td>1*2=2</td> <td>2*2=4</td> <td></td></tr><tr><!-- 第三行 --><td>1*3=3</td> <td>2*3=6</td> <td>3*3=9</td> </tr>
</table>
</body>
</html>

运行结果如下:

section为表格的标题,th可以看做td的加粗形式,tr为行标识,td为表格内容。在td标签中还有bgcolor属性和align属性。

1.1.4 表单(重点)

HTML表单用于搜集不同类型的用户输入。最常见最典型的表单即注册页面。
表单是一个包含表单元素的区域。
表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输入信息的元素。
表单使用表单标签(<form>)定义。
基本格式如下 :

<FORM Action="url" Method="*">
<input> </input>
</FORM>

表单的三个要点
表单控件(Form Controls)
动作属性(Action)
方法属性(Method)

表单控件(Form Controls)
通过HTML表单的各种控件,用户可以输入文字信息,或者从选项中选择,以及做提交的操作。
from标签中有input标签、select标签和textarea标签。

form标签中有action属性和method属性。
action属性
当用户单击确认按钮(即提交表单)时,表单的内容会被传送到另一个文件。表单的动作属性定义了目的文件的文件名。由动作属性指向的这个文件通常会对接收到的输入数据进行相关的处理。
method属性
method属性告诉浏览器如何将编码后的数据发给服务器。其值为get或者post。
get属性值,浏览器会将数据直接附在表单的 action url之后。这两者之间用问号进行分隔
post属性值,直接连接服务器,然后将html表单中的值发送给web服务器。这种方式是没有字符长度限制的。

<form action="" method="get"></form>

action属性作用是提交表单之后跳转的页面,可以是项目内部的页面,也可以是外部链接;method属性为提交方式,get属性值在提交之后表单的属性值会显示在地址栏,地址后先接?,然后接各个控件的值,如下图:

而post属性值则不会。

input标签有name属性和value属性,根据tpye属性还可以有checked属性,checked作用是默认选项。
input标签中type属性可分为几个属性值:

<input tpye="text"><!--文本框-->
<input tpye="password"><!--密码框-->
<input tpye="radio"><!--单选框-->
<input tpye="checkbox"><!--复选框-->
<input tpye="button"><!--普通按钮-->
<input tpye="reset"><!--重置按钮-->
<input tpye="submit"><!--提交按钮-->

例子如下:

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body>
<form action="" method="get">
用户名<input type="text" name="userame" maxlength="20" size="10px"> <br>
密  码<input type="password" maxlength="20" size="10px"><br>
性别 <input type="radio" name="sex" value="man" checked><input type="radio" name="sex" value="woman"><br>
选择你喜欢的动漫是:<br>
<input type="checkbox" name="cb01" value="1">海贼王
<input type="checkbox" name="cb02" value="2">火影
<input type="checkbox" name="cb03" value="3">死神
<input type="checkbox" name="cb04" value="4">刃牙<br>
选择你喜欢的食物:
<select name="sel" ><option value="miketea">奶茶</option><option value="chocolate">巧克力</option><option value="cake" selected>蛋糕</option>
</select>
<br>
大声说出你的想法: <br>
<textarea name="text" id="teext1" cols="30" rows="20"></textarea> <br>
<input type="button" name="but" value="普通按钮">
<input type="reset" name="resetbutton" value="重置按钮">
<input type="submit" name="sub" value="提交按钮">
</form>
</body>
</html>

分析:
input标签中的type属性的属性值为text时,maxlength属性为文本框最多输入的数字的容量。
在input标签中添加checked属性,将该选项设置为默认选项。
想要实现单选的效果,第一,type属性的属性值为radio;第二,各个选项的name属性的属性值必须保持一致
相反,想要实现复选的效果,第一,tyoe属性的属性为checkbox,各个选项的name属性的属性值必须不一致。
select标签表示下拉框,在select标签中的option标签中添加selected属性,表示默认选项,若选择中没有添加selected属性,则第一个为默认选项。
textarea标签表示文本域,其中的cols属性控制列,rows控制行。

表单小结


拓展
HTML5表单新的input标签的属性值
color 用于选取颜色
date选择一个日期
datetime-local选择一个日期和时间(无时区)
email包含e-mail地址的输入域
month选择一个月份
number包含数值的输入域
time选择一个时间
url包含URL地址的输入域,在提交表单时,会自动验证url域的值
week选择周

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>type新属性值</title>
</head>
<body><form action="success.html" method="get">选取颜色:<input type="color"><br><br>日期: <input type="date"><br><br>日期: <input type="datetime-local"><br><br>时间: <input type="time"><br><br>周: <input type="week"><br><br>月: <input type="month"><br><br>输入数字: <input type="number" max="20" min="0" step="2" value="2"><br><br>邮件: <input type="email"><br><br>地址: <input type="url"><br><br><input type="submit" name="sub" value="提交">
</form>
</body>
</html>

运行并填入数据,效果如下图:

number属性值还有其他的属性。max规定的最大值,min规定的最小值,step规定的步长,value规定默认值。

HTML小结

HTML常用基本标签分为有块元素和行内元素。
表单使用表单标签(<form>)定义。form标签有两个重要属性action属性和method属性,action属性作用是当用户单击确认按钮(即提交表单)时,表单的内容会被传送到另一个文件。method属性告诉浏览器如何将编码后的数据发给服务器。其值为get或者post。表单中用input标签设置文本框、密码框、单选框和复选框,用select标签设置下拉框,用textarea标签设置文本域。
HTML5表单新的input标签的属性值。是关于颜色、日期、时间、邮箱和url的属性值。

2 CSS样式表

CSS就是层叠样式表,网页实际上是一个多层的结构,通过CSS可以分别为网页的每一个层来设置样式,而最终我们能看到只是网页的最上边一层。总之,CSS用来设置网页中元素的样式。

CSS样式表的基本结构

<style type="text/css">选择器 {属性1:属性值;属性2:属性值;属性3:属性值;……
}</style>

2.1 三种格式修改样式

CSS有3种格式修改元素的样式:行内修改样式、内部样式表和外部样式表。

2.1.1 行内样式(尽量不用)

如下例子:

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><p style="color:red;font-size:20px;">今天天气很好</p>
</body>
</html>

在标签内部通过style属性来设置元素的样式。
缺点:使用内联样式,样式只能对一个标签生效。如果希望影响多个元素必须在每一个元素都要复制一遍,并且当样式发生变化时,我们必须要一个一个的修改,非常不方便,所以在开发时绝对不要使用内联样式!

2.1.2 内部样式

将样式编写到head中的style标签里,然后通过CSS选择器来选中元素并为其设置各种样式,可以同时为多个标签设置样式,并且修改时只需要修改一处即可。内部样式表更加方便对样式进行复用。
缺点:内部样式表只能对一个网页起作用,它里边的样式不能跨页面进行复用。
如下例子:

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title><style type="text/css">p{color: red;font-size: 20px;}</style>
</head>
<body><p>今天天气很好</p>
</body>
</html>

2.1.3 外部样式(最佳办法)

可以将CSS样式编写到一个外部的CSS文件中,然后通过link标签来引入外部的文件。
外部样式表需要通过link标签进行引入,意味着只要想使用这些样式都可以对其进行引用,样式就可以在不同的网页之间进行复用。
将样式编写到外部的CSS文件中,可以使用到浏览器的缓冲机制,从而加快网页的加载速度。
首先,新建css文件,如下图:

然后,在网页中用link标签将网页和CSS文件关联起来,

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title><!-- <style type="text/css">p{color: red;font-size: 20px;}</style> --><link rel="stylesheet" href="./css/CSS外部样式表.css">
</head>
<body><p>今天天气很好</p>
</body>
</html>

运行结果如下:

此外,还可以使用import关键字导入CSS样式表,比较少用,例子如下:

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title><style type="text/css";>@import "css/CSS外部样式表.css";</style></head>
<body><p>今天天气很好</p>
</body>
</html>

结论:在html文件写结构,在CSS文件写样式,在html用link标签将CSS样式表引入。或者通过import导入CSS样式表。

2.2 常见的选择器

常见的选择器有元素选择器,class选择器,id选择器,类选择器,通配选择器,伪类选择器。

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title><style type="text/css">ins{color: red;font-size: 20px;}.underline{color: blue;}</style>
</head>
<body><ins class="underline">今天心情很好</ins>
</body>
</html>

运行结果如下:

结论:class选择器的优先级大于标签选择器的优先级。class选择器样式用“.”来引用。

2.3 常见的背景样式属性

backgroud-color属性。设置背景颜色。
backgroud-image属性。设置背景图像。url值填入照片的路径。
backgroud-repeat属性。repeat-x属性值图片向左右重叠,repeat-y属性值图片向上下重叠,no-repeat属性值图片不重叠,保持照片原始大小。repeat属性值照片重复重叠。

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title><style type="text/css">body{background-image: url(picture/1.png);background-repeat: repeat-x;}</style>
</head>
<body></body>
</html>

运行效果如下:

CSS样式表小结

CSS样式表有三种修改样式方法:行内样式、内部样式和外部样式。
常见的选择器有:元素选择器,class选择器,id选择器,类选择器,通配选择器,伪类选择器。
常见的背景样式属性有:backgroud-color属性、backgroud-image属性和backgroud-repeat属性。

3 JavaScript

基本语法是:在网页中写JavaScript代码、JavaScript的语法与关键字、JavaScript的数据类型、变量的定义与使用和运算符的应用。

3.1 JavaScript基本概念

JavaScript 是属于HTML 和Web的编程语言。

3.1.1 什么是JavaScript?

JavaScript诞生于1995年。它当时的目的是为了验证表单输入的验证。因为在JavaScript问世之前,表单的验证都是通过服务器端验证的。而当时都是电话拨号上网的年代,服务器验证数据是一件非常痛苦的事情。经过许多年的发展,JavaScript 从一个简单的输入验证成为一门强大的编程语言。

JavaScript是一种具有面向对象能力的、解释型的程序设计语言。
更具体一点,它是基于对象事件驱动并具有相对安全性的客户端脚本语言。因为他不需要在一个语言环境下运行,而只需要支持它的浏览器即可。它的主要目的是,验证发往服务器端的数据、增加Web互动、加强用户体验度等。
基于对象:提供好了很多对象,可以直接拿过来使用。
事件驱动:html做网站静态效果,javaScript实现动态效果。
客户端:专门指的是浏览器。
JS的作用:操作HTML和CSS。

3.1.2 JavaScript特点

松散型:JavaScript语言核心与C、C++、Java相似,比如条件判断、循环、运算符等。但,它却是一种松散类型的语言,也就是说,它的变量不必具有一个明确的类型。
解释型:不需要编译。浏览器直接解释执行。
基于对象:我们可以直接使用JS已经创建的对象。Math String
安全性:不允许访问本地硬盘,不能将数据写入到服务器上。
跨平台:js依赖于浏览器本身,与操作系统无关。

3.1.3 js和java的区别

JavaScript和Java没有任何关系,属于两门编程语言。
开发公司
Java是sun公司开发的,现在是oracle公司。
JS是Netscape(网景公司)公司开发的
对象
Java是面向对象的 new
JS是基于对象的
数据类型
Java是强类型语言(每种变量都有确定的数据类型)例如:int i = “10”
JS是弱类型语言【变量的类型由值决定】例如:vari = 10,varj = “10”
执行过程
Java需要现编译成字节码文件,然后再执行
JS只需解析就可以执行

3.1.4 JavaScript核心

一个完整的JavaScript应该由下列三个不同的部分组成。
1 核心(ECMAScript)
ECMA:欧洲计算机协会,由ECMA组织制定的js语法,语句,函数等
2 文档对象模型(DOM)
Document Object Model:文档对象模型
3 浏览器对象模型(BOM)
Broswer Object Model:浏览器对象模型

3.2 JavaScript基础语法

JavaScript 语法是一套规则,它定义了 JavaScript 的语言结构。

3.2.1 如何在网页中写JavaScript(重点)

方法1 在html页面中直接嵌入JavaScript

<script>js程序</script>

js代码可以插入在<head></head>标签中间,也可以放在<body></body>
标签中间。
最常用的是放在<head></head>

例子:

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title><script>alert("hello,world01~");</script>
</head>
<body><script>alert("hello,world02~");</script>
</body>
</html>

运行结果如下:

点击确定,

结论:如果同时在head标签和body标签写JS,则会先运行head标签里面的JS,然后再运行body标签里面的JS。

方法2 引用外部的JavaScript(最常用的方法)

首先,新建.js文件,在.js文件中,不需要<script></script>标签对括起来,例子如下:

然后在html文件中链接js文件,使用如下语法:

<script src=".js文件路径"></script>

具体例子如下:

运行结果如下:

此方法优点是js文件可以被很多页面使用,提高复用率。

分析下列代码:

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title><script src="js/js01.js">alert("test");</script>
</head>
<body>
</body>
</html>

问题:会不会弹出test文字提示框?
答:不会。当一个script标签一旦引用了外部的js文件,如果在这个标签还有js代码,是不会执行的。

分析下列代码:

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title><script src="js/js01.js">// alert("test");</script><script>alert("今天天气很好");</script>
</head>
<body> <script>alert("今天心情很好");</script>
</body>
</html>

问题:会弹出什么提示框?
答:首先执行外部链接的script语句,弹出“hello,world~”提示框。然后执行head标签的script语句,弹出“今天天气很好”提示框。最后执行body标签的script语句,弹出“今天心情很好”提示框。

3.2.2 JavaScript语法(重点)

1 js变量区分大小写。
2 每一行的分号可有可无。
3 标识符
所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。标识符可以是下列格式规则组合起来的一或多个字符:
第一字符必须是一个字母、下划线或一个美元符号($)。
其他字符可以是字母、下划线、美元符号或数字。
不能把关键字、保留字、true、false和null作为标识符。
例如:
myname,book123_,_123,$123都是合法的标识符。
123,true,null,@123,abc!都不是合法的标识符。
4 注释
单行注释

//注释

多行注释

/*
多
行
注
释
*/

注释的内容在代码执行过程中不起作用。
5 定义变量时,使用var运算符。声明变量的格式:var 变量名=值;
比如:
var username=“tom”; 正确
var age=30; 正确

6 使用大括号标签代码块
{}被封装在大括号内的语句按照顺序执行。

{语句块1;语句块2;语句块3;//依次执行语句块1,语句块2,语句块3
}

7 JavaScript中的关键字
关键字不能用作变量名。函数名以及循环标签。
关键字有如下:

abstract continue finally instanceof private this boolean default float int public throw break do for interface return typeof byte double function long short true case else goto native static varcatch extends implements new super void char false import nullswitch while class final in package with synchronized

3.2.3 JavaScript的数据类型

(1)数值型有整型和浮点型
整型

123 //十进制
0123 //八进制,以0开头
0x123//十六进制,以0x开头

浮点型
整数部分假小数部分组成,只能用十进制表示,不过可以使用科学记数法。

3.1415926//标准形式的浮点数
3.14E9//采用可惜记数法来表示,等于3.14*10^9

如下例子:

var x=123;
var y=123.4567;
var z=3.14E2;

(2)字符串型
字符串型数据是使用单引号或者双引号括起来的一个或者多个字符。

'a' 'Hello World'
"a" "Hello World"

JavaScript与Java不一样,js没有char数据类型,如果要表示单个字符,必须使用长度为1的字符串。
单引号包含双引号:'大家好,我叫"tom""
双引号包含单引号:"大家好,我叫'tom'"
如下例子:

var a="test";
var b='testing';

(3)布尔型
布尔型数据只有true或者false。在js中也可以使用整数0代表false,使用非0的整
数来代表true。

var m=true;
var bor=false;
var ye=7>1;//ye的值为true

(4)转义字符
以反斜杠开头的不可显示的特殊字符通常称为控制字符,也被称为转义字符。

\b //退格
\n //换行
\t //Tab符
\r //回车符
\' //单引号
\" //双引号
\\ //反斜杠

js文件如下:

alert("hello,world~\n ab\tc\n a\rbc\n a\'b\"c\\");

运行效果如下图:

(5)空值
null,用于定义空的或者不存在的引用。

var a=null;

(6)未定义值
已经声明但是没有赋值的的变量。

var a;
alert(a);
//undefined 是关键字,用来代表未定义值

注:
查看一个数据类型的格式

typeof(变量名) //格式一
type 变量名 //格式二
var n="大家好,我是‘叶大叔’";
var m=true;
alert(typeof(n));
alert(typeof m);

运行效果如下图:

3.2.4 变量的定义与使用

(1)变量的命名规则
与标识符规则一致!因为变量是标识符的一种。
(2)变量的声明

var variable;

可以使用一个var声明多个变量,比如

var a,b,c,d;

可以在声明变量的同时对它进行赋值,也就是初始化。

var a=1,b=true,c="123",d=3.14;

如果只是声明了变量,没有赋值,那么该变量的默认值是undefined。
JavaScript是弱类型,声明的时候不需要指定变量的类型,变量的类型将根据变量的值来确定。

函数就是方法,为了解决问题。也可以称为功能。

function 函数名(){函数体;
}

(3)全局变量的声明
在函数体外声明的都是全局变量。
在函数体内部不使用var声明直接赋值的变量是全局变量。??自己验证时出错,在函数内定义全局变量,无法引用该全局变量。

(4)变量的作用域
变量的作用域是指变量在程序中的有效范围。
全局变量:定义在所有函数之外,作用于整个代码的变量。
局部变量:定义在函数体内,只作用于函数体内的变量。

3.2.5 赋值运算符

var suername="Bass"; //简单赋值
a+=b; //a=a+b;
a-=b;//a=a-b;
a*=b; //a=a*b;
a/=b; //a=a/b;
a%=b; //a=a%b; 取余数
a&=b; //a=a&b; 且
a|=b; //a=a|b; 或
a^=b; //a=a^b; 异或
& | ^ 计算两个布尔值(true,false)
& 一假全为假
| 一真全为真
^ 不相同为真,相同为假

&,例子如下:

var a=true;
var b=false;
alert(a&b);

运行结果如下:

结果是false,0表示false。
|,例子如下:

var a=true;
var b=false;
alert(a|b);


结果是true,1表示true。

^,例子如下:

var a=true;
var b=false;
alert(a^b);


结果是true,1表示true。

此外还有自增和自减。

i=1;j=++i; //j=2,i=2,++i是先加后用
i=1;j=i++; //j=2,i=1,i++是先用后加
i=10;j=--i; //j=9,i=9,--i是先减后用
i=10;j=i--; //i=10,j=9,i--是先用后减//除法运算时,0不能作为除数,如果0是除数,则返回结果Intfinity。

3.3 JavaScript流程控制

JavaScript流程控制有if语句、switch语句、for语句、while语句和do-while语句。

3.3.1 if语句

//第一种
if(表达式){}
//第二种
if(表达式){}else{}
//第三种
if(表达式1){}else if(表达式2){}else if(表达式3){}else{}

例子如下:

//第一种
var a=20;
if(a<50){alert("条件成立");
}
//第二种
var a=200;
if(a<50){alert("条件成立");
}else{alert("条件不成立");
}
//第三种
//分数[90,100]优秀,分数[60,90)及格,分数[0,60)不及格,其他为非法输入。

3.3.2 switch语句

switch语句的语法结构

switch(表达式){case 1:语句块1;break;case 2:语句块2;break;case 3:语句块3;break;……default:语句块n;
}

break作用强制退出流程。
例子如下:

var day="5";
switch(day){case "1":alert("星期一");break;case "2":alert("星期二");break;case "3":alert("星期三");break;case "4":alert("星期四");break;case "5":alert("星期五");break;case "6":alert("星期六");break;case "7":alert("星期日");break;default:alert("请输入合法数据");
}

结果会弹出“星期五”的提示框。
如果改写上述例子,删除一些break,如下:

var day="5";
switch(day){case "1":alert("星期一");break;case "2":alert("星期二");break;case "3":alert("星期三");break;case "4":alert("星期四");break;case "5":alert("星期五");case "6":alert("星期六");case "7":alert("星期日");default:alert("请输入合法数据");
}

会弹出“星期五”、“星期六”、“星期日”和“请输入合法数据”的提示框。如果字啊语句块后面没有break语句,switch则会一直执行下去。

3.3.3 for语句

语法格式:
for(①initialize;②test;④increment){
③statement
}
①->②(true)->③->④->②(true)->③->④->…
①->②(true)->③->④->②(false) for循环结束
例子如下:

//求1-10整数和。
var sum=0;
for(var i=1;i<=10;i++){sum=sum+i;
}
alert("1-10的整数和为"+sum);

3.3.4 while语句

语法格式:while(①expression){
②statement
}
①(true)->②->①(true)->②…①(false)直接退出while循环。

//用while语句求1-10整数和
var sum=0;
var i=1;while(i<=10){sum=sum+i;i++;}
alert("1-10的整数和为"+sum);

3.3.5 do-while语句

语法格式:do{
①statement
}while(②expression);

//用do-while语句求1-10整数和
var sum=0;
var i=1;
do{sum=sum+i;i++;
}while(i<=10);
alert("1-10的整数和为"+sum);

while循环是先判断条件是否成立,然后再根据判断的结果是否执行循环体。也就是说循环体有可能一次都执行不了。
do-while循环是先执行一次循环体,然后再判断条件是否成立。所以不管条件是否成立,至少能够执行一次。

3.4 函数

函数就是方法,解决某个问题,实现某个功能。

3.4.1 函数的定义

function 函数名字([参数1,参数2,参数3,……]){
函数体;
[return 返回值;]
}
注:[ ]为可选项。
例如:定义两数相乘的函数,如下:

function multiplication(x,y){var result=x*y;return result;
}

3.4.2 函数的调用

格式:函数名 (实参);
例如:调用multiplication函数,实参为3,4,如下:

var a=multiplication(3,4);
alert("相乘结果为"+a);

运行结果如下:

3.4.3 匿名函数

作用:用一个变量来接收函数。
格式:
var 变量名=function([参数1,参数2,参数3,……]){
函数体;
[return 返回值;]
}

匿名函数例子,如下:

var a=function(x,y){var z=x+y;alert("z的值为"+z);
}
a(3,3);

运行结果如下:

3.4.4 全局函数

全局函数不属于任何一个对象,直接写名称使用即可。
(1)encodeURI函数
作用:对字符进行编码

var str="测试testing123!"
var encode01=encodeURI(str);
document.write(encode01);

运行效果如下图:

所以,“测试”的编码为%E6%B5%8B%E8%AF%95。

(2)decodeURI函数
作用:对字符进行解码

var str="%E6%B5%8B%E8%AF%95";
var decode01=decodeURI(str);
document.write(decode01);

运行效果如下图:

所以,%E6%B5%8B%E8%AF%95解码为“测试”。

(3)encodeURIComponent函数
作用:对URI组件进行编码。

var uri = "https://w3school.com.cn/my test.asp?name=ståle&car=saab";
var res = encodeURIComponent(uri);
alert(res);

(4)decodeURIComponent函数
作用:解码 URI 组件。
语法:decodeURIComponent(uri)
uri参数为必须参数,为要解码的URI。
返回值:字符串,表示解码后的 URI。

var uri="https%3A%2F%2Fw3school.com.cn%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab";
var rui_dec=decodeURIComponent(uri);
alert(rui_dec);


该结果就是上题的uri。

(5)eval函数
作用:识别字符串中的js代码

var str="alert('123')";//字符串为alert('123')
eval(str);//eval函数识别字符串中的js代码
document.write("<hr>");//在页面中显示一条水平线,hr标签为显示为一条水平线

运行效果如下图:

(6)isFinite函数
作用:可确定数字是否是有限的合法数字。
如果值为 +infinity、-infinity 或 NaN(非数字),则此函数返回 false,否则返回 true。
返回值为布尔值。如果值为 +infinity、-infinity 或 NaN,则返回 false,否则返回 true。
注:
JavaScript 全局属性

属性 描述
Infinity 表示正/负无穷大的数值
NaN “非数字”(Not-aNumber)
undefined 表示变量尚未赋值
alert(isFinite(123));

上述代码运行结果返回true,因为123是合法数字。如果输入NaN,NaN为非法字符,则返回false。

(7)isNaN函数
作用:确定值是否为非数字(Not-a-Number)
不是数字返回true,是数字返回false

var str='123';
alert(isNaN(str));

上述代码运行结果返回为false。

(8)Number函数
作用:函数将对象参数转换为表示对象值的数字。

语法:Number(object)
object 可选。JavaScript 对象。如果未提供该参数,则返回 0。

返回值:数值。将不同的对象值返回为数字。
如果该值无法转换为合法数字,则返回 NaN。如果未提供参数,则返回 0。
如果参数是 Date 对象,则 Number() 函数返回自 UTC 1970 年 1 月 1 日午夜以来的毫秒数。

alert(Number(true));

上述代码运行结果返回为1。

alert(Number(false));

上述代运行码结果返回为0。

var x = new Date();
alert(Number(x));

上述代码运行结果返回自 UTC 1970 年 1 月 1 日午夜以来的毫秒数。

alert(Number("999"))

上述代码运行结果返回999数值。

alert(Number("999 888"));

上述代码运行结果返回NaN,999 888无法转换为合法数字。

alert(Number());

上述代码运行结果返回0,未提供参数,则返回 0。

(9)parseFloat函数
作用:解析字符串并返回浮点数。
此函数确定指定字符串中的第一个字符是否为数字。如果是,它会解析字符串直到到达数字的末尾,并将数字作为数字而不是字符串返回
注意:
只返回字符串中的第一个数字!
允许前导和尾随空格。
如果第一个字符不能转换为数字,parseFloat() 返回 NaN。

alert(parseFloat("10"));

上述代码运行结果返回数值10。

alert(parseFloat("10.00"));

上述代码运行结果返回数值10。若小数后为0,则省略小数位。

alert(parseFloat("34 56 78"));

上述代码运行结果返回数值34。parseFloat函数只返回字符串中的第一个数字,即34。

alert(parseFloat("  60  "));

上述代码运行结果返回数值60,parseFloat函数允许前导和尾随空格。

alert(parseFloat("40 years"));

上述代码运行结果返回数值40,parseFloat函数解析字符串直到到达数字的末尾,years不是数字,所以不能返回。

alert(parseFloat("hello"));

上述代码运行结果返回数值NaN,第一个字符不能转换为数字,parseFloat() 返回 NaN。

(10)parselnt函数
作用:函数解析字符串并返回整数。
parseInt(string,radix)
string 必需。要解析的字符串。如果第一个字符不能转换为数字,parseInt() 返回 NaN。
radix 可选参数。代表要使用的数字系统的数字(从 2 到 36)。
如果 radix 参数被省略,JavaScript 假定如下:
如果字符串以 “0x” 开头,则基数为 16(十六进制)
如果字符串以 “0” 开头,则基数为 8(八进制)。此特性已弃用
如果字符串以任何其他值开头,则基数为 10(十进制)
返回值: 数值。如果第一个字符不能转换为数字,则返回 NaN。
注意:只返回字符串中的第一个数字!

var a=parseInt("10");
alert(a);

上述代码运行结果为10,说明parselnt函数函数解析字符串并返回整数。

var a=parseInt("hello");
alert(a);

上述代码运行结果为返回值为NaN,第一个字符不能转换为数字,parselnt函数返回 NaN。

var a = parseInt("3 4 45 66");
alert(a);

上述代码运行结果为3,说明只返回字符串中的第一个数字。

(11)String函数
作用:将对象的值转换为字符串。
注释:String() 函数返回与单个对象的 toString() 相同的值。
语法:String(object)
object 必需。JavaScript 对象。

var x1 = Boolean(0);
var res =String(x1);
alert(res);

上述代码就行结果返回false。String函数将x1的值转为为字符串false。

var x2 = Boolean(1);
var res =String(x2);
alert(res);

上述代码就行结果返回true。String函数将x2的值转为为字符串true。

var x3 = new Date();
var res =String(x3);
alert(res);

上述代码就行结果返回Fri Apr 01 2022 21:31:26 GMT+0800 (中国标准时间)。

var x4 = "12345";
var res =String(x4);
alert(res);

上述代码就行结果返回字符串12345。

var x5 = 12345;
var res =String(x5);
alert(res);

上述代码就行结果返回字符串12345,String函数将整型12345转换为字符串12345。

3.5 事件

当在 HTML 页面中使用 JavaScript 时,JavaScript 能够“应对”这些事件。

3.5.1 常见的事件

事件 描述
onabort 对象载入被中断时触发
onablur 元素或窗口本身失去焦点时触发
onchange 改变<select>元素中的选项或其他表单元素失去焦点,并且在其获取焦点后内容发生过改变时触发
onerror 出现错误时触发
onfocus 任何元素或窗口本身获得焦点时触发
onkeydown 键盘键(包括Shift、Alt等)被按下时触发
onkeypress 键盘被按下,并生成一个字符时触发。也就是说按下Shift或Alt等键不会触发
onkeyup 释放键盘上的按键时触发
onload 页面完全载入后触发
onclick 页面完全卸载后触发
onclick 单击鼠标邮件时触发。当光标的焦点在按钮上,并按Enter键是也会触发
ondblclick 双击鼠标左键时触发
onmousedown 单击任何一个鼠标按键时触发
onmousemove 鼠标在某个元素上移动时持续触发
onmouseout 鼠标从指定的元素上移开时触发
onmouseover 鼠标移动到某个元素时触发
onmouseup 释放任意一个鼠标按键时触发
onrest 单击充值按钮时,在<form>上触发
onresize 窗口或框架的大小发生改变时触发
onscroll 在任何带滚动条的元素或窗口上滚动时触发
onselect 选中文本时触发
onsubmit 单击提交按钮时,在<form>上触发

3.5.2 事件处理

时间出程序是用于响应某个时间而执行的处理程序。时间处理程序可以是任意的JavaScript语句,通常使用函数来对事件进行处理
第一种方式,事件处理在html中绑定:

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>事件</title><script>function save(){alert("按钮被点击");}function fun(){alert("双击左键成功!");}</script>
</head>
<body><input type="button" value="按钮1" onclick="save()" ><input type="button" value="按钮2" ondblclick="fun()" >
</body>
</html>

上述代码运行结果为:页面有两个按钮,一个按钮1,一个按钮2。鼠标左键单击按钮1,弹出“按钮被点击”窗口。鼠标左键双击按钮2,弹出“双击左键成功!”窗口。

第二种方式,事件处理在JavaScript中绑定:

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body> <form><input type="button" value="按钮"  id="btn" ></form><script>var temp=document.getElementById("btn");temp.onclick=function(){alert("点击成功!");
}</script>
</body>
</html>

上述代码运行结果为:点击按钮,弹出“点击成功!”的提示框。

3.6 正则表达式

定义
正则表达式是构成搜索模式的字符序列。该搜索模式可用于文本搜索和文本替换操作。
当搜索文本中的数据时,您可使用搜索模式来描述您搜索的内容。
正则表达式可以是单字符,或者更复杂的模式。
正则表达式可用于执行所有类型的文本搜索文本替换操作。

语法

/pattern/modifiers;

例子

var patt = /hello/i;

例子解释:
/hello/i 是一个正则表达式。
hello是模式(pattern)(在搜索中使用)。
i 是修饰符(把搜索修改为大小写不敏感)。

在字符串方法search() 中使用正则表达式

var str = "hello";
var n = str.search(/o/i);

n 中的结果将是:4

在字符串方法replace() 中使用正则表达式
例子
使用大小写不明的正则表达式以hello来替换字符串中的Bass:

var str = "Visit Bass";
var res = str.replace(/hello/i, "Bass");

res 的结果将是:

Visit hello

正则表达式修饰符
修饰符可用于大小写不敏感的更全局的搜素:

修饰符 描述
i 执行对大小写不敏感的匹配
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
m 执行多行匹配

正则表达式模式
括号用于查找一定范围的字符串:

表达式 描述
[abc]
[0-9]
`(x y)`

元字符(Metacharacter)是拥有特殊含义的字符:

元字符 描述
\d 查找数字
\s 查找空白字符
\b 匹配单词边界
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符

定义量词:

量词 描述
n+ 匹配任何包含至少一个 n 的字符串
n* 匹配任何包含零个或多个 n 的字符串
n? 匹配任何包含零个或一个 n 的字符串

使用 test()
test() 是一个正则表达式方法。
它通过模式来搜索字符串,然后根据结果返回 true 或 false。

例子

var patt = /e/;
patt.test("The best things in life are free!");

由于字符串中有一个 “e”,以上代码的输出将是:

true

上面的两行可缩短为一行:

/e/.test("The best things in life are free!");

使用 exec()
exec()方法返回值不是true或者false。而是当没有搜索到匹配的字符时,返回null,否则返回一个数组,这个数组的第一个元素包含与正则表达式相匹配的字符串,其他元素包含的是匹配的各个分组(用括号括起来的子表达式)。

例子

/e/.exec("The best things in life are free!");

由于字符串中有一个 “e”,以上代码的输出将是:

e

身份证例子

<!DOCTYPE html>
<html lang="cn">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><form name="f">身份证:<input type="text" name="id" size="20"><input type="button" value="提取" onclick="grep()"></form><script>function grep(){//找到输入的身份证var id_value=f.id.value;//声明身份证号的正则表达式var pattern=/(\d{6})(\d{8})(\d{4})/;//判定工作var judge=pattern.exec(id_value);if(judge!=null){alert("出生日期"+judge[2]);}else{alert("请输入合法的身份证");}}</script>
</body>
</html>

将上述代码运行,在页面上的身份证文本框输入“441222199712121234”,弹出“出生日期19971212”提示框。

3.7 Cookies

Cookie 让您在网页中存储用户信息。
Cookie 是在您的计算机上存储在小的文本文件中的数据。
当 web 服务器向浏览器发送网页后,连接被关闭,服务器会忘记用户的一切。
Cookie 是为了解决“如何记住用户信息”而发明的:
当用户访问网页时,他的名字可以存储在 cookie 中。
下次用户访问该页面时,cookie 会“记住”他的名字。

Cookie 保存在名称值对中,如:

username=bass

当浏览器从服务器请求一个网页时,将属于该页的 cookie 添加到该请求中。这样服务器就获得了必要的数据来“记住”用户的信息。

如果浏览器已关闭本地 cookie 支持,则以下实例均无法工作。

3.7.1 创建cookie

JavaScript 可以用 document.cookie 属性创建、读取、删除 cookie。
通过 JavaScript,可以这样创建 cookie:

doucument.cookie="username=bass";

还可以添加有效日期(UTC 时间)。默认情况下,在浏览器关闭时会删除 cookie:

document.cookie = "username=bass; expires=Sat Apr 02 2022 22:32:29 UTC";

通过 path 参数,您可以告诉浏览器 cookie 属于什么路径。默认情况下,cookie 属于当前页。

document.cookie = "username=bass; expires=Sat Apr 02 2022 22:32:29 UTC";path=/";

3.7.2 读取 cookie

通过 JavaScript,可以这样读取 cookie:

var x = document.cookie;

3.7.3 改变 cookie

通过使用 JavaScript,你可以像你创建 cookie 一样改变它:

document.cookie = "username=bass; expires=Sat Apr 02 1970 22:32:29 UTC";path=/";

旧 cookie 被覆盖。

3.7.4 删除 cookie

删除 cookie 时不必指定 cookie 值。
直接把 expires 参数设置为过去的日期即可:

document.cookie = "username=bass; expires=Sat Apr 02 2022 22:32:29 UTC";path=/";

您应该定义 cookie 路径以确保删除正确的 cookie。
如果你不指定路径,一些浏览器不会让你删除 cookie。

3.7.5 cookie 字符串

document.cookie 属性看起来像一个正常的文本字符串。但它不是。
即使你向 document.cookie 写一份完整的 cookie 字符串,当再次读取时,你只能看到它的名称-值对。
如果设置了新 cookie,则旧的 cookie 不会被覆盖。新的 Cookie 会被添加到 document.cookie,所以如果你读取 document.cookie,你得到的东西会像这样:

cookie1 = value; cookie2 = value;

如果你想找到一个指定 cookie 的值,你必须编写 JavaScript 函数来搜索 cookie 字符串中的 cookie 值。
这里需要结合下面的实例!!!!!!!!!!!!

3.7.6 JavaScript Cookie 实例

创建一个 cookie 来存储访问者的名称。
访客第一次到达网页时,会要求他填写姓名。然后将该名称存储在 cookie 中。
下次访客到达同一页时,他将收到一条欢迎消息。
例如,我们将创建 3 个JavaScript函数:
(1)设置cookie的函数
(2)获取 cookie 的函数
(3)检测 cookie 的函数

(1)设置cookie的函数
创建一个函数,将访问者的名字存储在 cookie 变量中:

function setCookie(cname,cvalue,exdays){var d=new Date();d.setTime(d.getTime()+(exdays*24*60*60*1000));var expires="expires"+d.toUTCString();document.cookie=cname+"="+cvalue+";"+expires+";path=/";
}

分析上述代码,
cookie 的名字(cname),cookie 的值(cvalue),以及知道 cookie 过期的天数(exdays)。
通过把 cookie 名称、cookie 值和过期字符串相加,该函数就设置了 cookie。

(2)获取 cookie 的函数
创建一个函数返回指定 cookie 的值:

function getCookie(cname) {var name = cname + "=";var decodedCookie = decodeURIComponent(document.cookie);var ca = decodedCookie.split(';');for(var i = 0; i <ca.length; i++) {var c = ca[i];while (c.charAt(0) == ' ') {c = c.substring(1);}if (c.indexOf(name) == 0) {return c.substring(name.length, c.length);}}return "";
}

分析上述代码,把 cookie 作为参数(cname)。
创建变量(name)与要搜索的文本(CNAME”=”)。
解码 cookie 字符串,处理带有特殊字符的 cookie,例如 “$”。
用分号把 document.cookie 拆分到名为 ca(decodedCookie.split(‘;’))的数组中。
遍历 ca 数组(i = 0; i < ca.length; i++),然后读出每个值 c = ca[i]。
如果找到 cookie(c.indexOf(name) == 0),则返回该 cookie 的值(c.substring(name.length, c.length)。
如果未找到 cookie,则返回 “”。

(3)检测 cookie 的函数
我们创建检查 cookie 是否设置的函数。
如果已设置 cookie,将显示一个问候。
如果未设置 cookie,会显示一个提示框,询问用户的名字,并存储用户名 cookie 365 天,通过调用 setCookie 函数:

function checkCookie() {var username = getCookie("username");if (username != "") {alert("Welcome again " + username);} else {username = prompt("Please enter your name:", "");if (username != "" && username != null) {setCookie("username", username, 365);}}
}

JavaScript小结

JavaScript是基于对象事件驱动并具有相对安全性的客户端脚本语言
JavaScript特点:松散型、解释型、基于对象、安全性、跨平台。
JavaScript可以写在html文件的head标签里面,可以写在body标签,也可以写在外部js文件。
JavaScript的数据类型有数值型、字符串型、布尔型、空值、未定义值。
赋值运算符有+,-,*,/,%,&,|,^
JavaScript流程控制有if语句、switch语句、for语句、while语句和do-while语句。
函数定义用function关键字定义。匿名函数用一个变量来接受函数,不用写函数名。
全局函数可直接写名称使用即可。直接写名称使用即可。全局函数有encodeURI函数、decodeURI函数、encodeURIComponent函数、decodeURIComponent函数、eval函数、isFinite函数、isNaN函数、Number函数、parseFloat函数、parselnt函数、String函数。
JavaScript负责事件。通常使用函数来对事件进行处理。
正则表达式是构成搜索模式的字符序列,简单理解为模板。
Cookie 是在您的计算机上存储在小的文本文件中的数据。对cookie操作有:操作cookie、读取cookie、改变cookie、删除cookie。

总结

html负责框架,css负责样式,js负责动作。

软件测试 Web自动化测试 基础知识 HTML CSS JavaScript相关推荐

  1. WEB前端基础(HTML+CSS+JavaScript)(上)最好看最详细的笔记~

    WEB前端基础 当前部分是基于HTML与CSS总结,后续有JavaScript更新~ 文章目录 WEB前端基础 一.HTML概述(阶段1 入门概述) 1.HTML 二.第一个HTML页面 1.HTML ...

  2. 文成小盆友python-num14 - web 前端基础 html ,css, JavaScript

    本部分主要内容 html - 基础 css - 基础 一.html 标签 html 文档标签树如下: head 部分 Meta(metadata information) 提供有关页面的元信息,例:页 ...

  3. web自动化测试基础知识整合(一)

    文章目录 1.EC判断页面是否加载成功 2. 元素定位及填写 3. 随机生成测试数据 4. 精准截取验证码图片的思路 5. 图片验证码的识别解决方案 山野千里,只要在路上,内心就满是欢喜,继续坚持,继 ...

  4. Web前端基础知识:CSS盒子模型、绝对定位和相对定位

    一:CSS盒子模型 CSS盒子模型概念:CSS盒子模型包含了内容(content).内边距(padding).边框(border).外边距(margin).宽度(width).高度(height)几个 ...

  5. 软件测试-web自动化测试教程

    selenium的官网:Selenium selenium的API文档:Generated Documentation (Untitled) selenium的中文文档:介绍 | Selenium 中 ...

  6. Web前端开发精品课HTML CSS JavaScript基础教程HTML部分知识点总结

    内容来自莫振杰Web前端开发精品课HTML CSS JavaScript基础教程章节总结 第1章  HTML简介   1.前端技术简介 (1)从Web1.0到Web2.0,网页制作已经变成前端开发了. ...

  7. Web前端开发精品课HTML CSS JavaScript基础教程CSS部分知识点总结

    内容来自莫振杰Web前端开发精品课HTML CSS JavaScript基础教程章节总结 第11章  CSS简介 1.HTML是网页的结构,CSS是网页的外观,JavaScript是网页的行为. 2. ...

  8. Web前端开发精品课HTML CSS JavaScript基础教程JavaScript部分知识点总结

    内容来自莫振杰Web前端开发精品课HTML CSS JavaScript基础教程章节总结 第24章  JavaScript简介 1.HTML是网页的结构,CSS是网页的外观,而JavaScript是网 ...

  9. 【持续..】WEB前端面试知识梳理 - CSS部分

    传送门: WEB前端面试知识梳理 - CSS部分 WEB前端面试知识梳理 - JS部分 最近在看大厂的一些面试题,发现很多问题都是平时没有在意的,很多知识都是知道一点但又很模糊说不出个所以然来,反思自 ...

最新文章

  1. java:迭代器Iterator
  2. DL:神经网络算法简介之Affine 层的简介、使用方法、代码实现之详细攻略
  3. Hadoop 安装详解--新手必备
  4. java ftpclient API上传下载文件,不支持中文
  5. 手机定位和什么有关?关机后的手机还能被定位吗?
  6. [译]SQL SERVER 2016 – Temporal Tables
  7. 【离散数学中的数据结构与算法】六 排列与组合二
  8. ie8 ajax访问不了https,ie8不支持https协议的api接口么
  9. struts2、hibernate工作原理和流程
  10. MapReduce之WordCount案例
  11. pyculiarity解决报错ValueError: data must be a 2 column data.frame, with thefirst column...
  12. [转]BT种子文件格式
  13. python opencv保存图片_OpenCV Python 保存图片
  14. 《计算机网络基础》考试大纲
  15. 单臂路由VLAN通信
  16. oninput、onchange、onpropertychange的区别
  17. python 运行另一个py_如何在python中执行另一个py文件
  18. 虚拟机vm安装 黑群晖 DS3617xs 6.2
  19. 导航条UIBarButtonItem添加图片,如何避免渲染
  20. 天啦噜!知道硬盘很慢,但没想到比 CPU L1 Cache 慢 10000000 倍

热门文章

  1. Uniapp——拨打电话、发送短信
  2. SPI总线时钟的极性(CPOL)与相位(CPHA)
  3. 【python】 输出换行字符 “\n“
  4. 停车场设计软件测试,停车场车位视频检测系统设计
  5. 判断是否为水仙花数(Python)
  6. python编程:从入门到实践(持续更新)
  7. 为什么自建 UI 框架?
  8. FusionCharts参数及功能特性详解(二)
  9. LeetCode高频题300. 最长递增子序列
  10. 云南新开普智慧校园一卡通解决方案,K12智慧校园信息化建设解决方案