Python 之Web编程
发布日期:2021-05-09 01:20:16 浏览次数:23 分类:博客文章

本文共 42108 字,大约阅读时间需要 140 分钟。

一 、HTML是什么?

  htyper text markup language 即超文本标记语言

  超文本:就是指页面内可以包含图片、链接、甚至音乐、程序等非文字元素

  标记语言:标记(标签)构成的语言

  静态网页:静态的资源,如xxx.html

  动态网页:html代码是由某种开发语言根据用户请求动态生成

  html文档树结构图:

二 、 什么是标签?

  - 由一对尖括号包裹的单词构成,如<html> 所有标签中的单词不可能从数据开头

  - 标签不区分大小写<html>和<HTML>,建议使用小写

  - 标签分两部分:开始标签<a>和结束标签</a>,两个标签之间的部分,叫标签体

  - 有些标签功能比较简单,使用一个标签即可,这种标签叫做自闭合标签,如:<br/>、<hr/>、<input/>、<img/>

  - 标签可以嵌套,但不能交叉嵌套。如:<a><b></a></b>

三 、 标签的属性

  - 通常是以键值对形式出现的,例如 name="alex"

  - 属性只能出现在开始标签 或 自闭合标签中

  - 属性名字全部小写,属性值必须使用双引号或单引号包裹,如:name="alex"

  - 如果属性值和属性名完全一样,直接写属性名即可,如:readonly

 1、<head>标签

<meta>

  meta标签的组成:meta标签共有两个属性,分别是http-equiv属性和name属性,不同的属性又有不同的参数值,这些不同的参数值就实现不同的网页功能

  1:name属性主要用于描述网页,与之对应的属性值为content,content中的内容主要是便于搜索引擎机器人查找信息和分类信息用的

1     
2

  2:http-equiv相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content,content中的内容其实就是各个参数的变量值。

1     
2
3
# 兼容标签,IE"N"代表兼容几

 非meta标签

1     hello world2     
3
# 引入样式4 # 引入样式

 2 、 <body>标签

基本标签(块级标签和内联标签)

1 
:n的取值1-6;从大到小,用于表示标题(块标签,独占一行)2

:段落标签,包裹的内容换行,并且也上下内容之间有一行空白(块标签,独占一行)3 :加粗标签4

:文字加上一条中线5
:文字变成斜体6 :上角标和小角标17
:换行8


:水平线9

 块级标签:<p><h1><table><ol><ul><form><div>

 内联标签:<a><input><img><sub><sup><textarea><span>

block(块)元素的特点

  总是在新行上开始

  宽度缺省是他容易的100%,除非设定一个宽度

  它可以容纳内联元素和其他块元素(嵌套)

inline元素的特点

  和其他元素都在一行上

  宽度就是它的文字或图片的宽度,不可改变

  内联元素只能容纳文本或其他内联元素

特殊字符

&lt(小于); &gt(大于);&quot;&copy(版权);&reg;&nbsp

图形标签:<img>

src:图片的路径alt:图片没有加载成功时的提示title:鼠标悬浮时的提示信息width:图片的宽height:图片的高(宽高两个属性,只用一个会自动等比缩小)

超链接标签(锚标签):<a>

href:要链接的资源路径,如:href="www.baidu.com"target:_blank:在新的窗体打开超链接,框架名称;在指定框架中打开连接内容name:定义页面的书签,用于跳转href:#id(锚)

列表标签:

1 
    :无序列表2
      :有序列表3
    1. :列表中的每一项4
      :定义列表5
      :列表标题6
      :列表项
1  2  3  4     
5 Title 6 7 8
    9
  • 11
  • 10
  • 22
  • 11
  • 33
  • 12
13 14
ul无序列表
1  2  3  4     
5 Title 6 7 8
    9
  1. 44
  2. 10
  3. 55
  4. 11
  5. 66
  6. 12
13 14
ol有序列表
1  2  3  4     
5 Title 6 7 8
9
第一章
10
第一节
11
第二节
12
第二章
13
第一节
14
第二节
15
16 17
dl定义列表

表格标签:<table>

1 border:表格边框 2 cellpadding:内边距 3 cellspacing:外边距 4 width:像素 百分比 5 :table row 6     :table head cell 7     :table data cell 8 rowspan:单元格竖跨多少行 9 colspan:单元格横跨多少列(合并单元格)10 :table header :为表格进行分区

表单标签:<form>

   表单用于向服务器传输数据。

  表单能够包含input元素,比如文本字段,复选框,单选框,提交按钮等等

  表单还可以包含textarea,select,fieldset和label元素

  表单属性:

  HTML表单用于接收不同类型的用户输入,用户提交表单时向服务器传输数据,从而实现用户与Web服务器的交互。表单标签,要提交的所有内容都应该在该标签中。

  action:表单提交到哪,一般指向服务器端一个程序,程序接受到表单提交过来的数据(即表单元素值)作相应处理

  method:表单的提交方式post/get默认取值就是get(信封)

    get:1.提交的键值对,放在地址栏url后面;2.安全性相对较差;3.对提交内容的长度有限制

    post::1提交的键值对不在地址栏;2.安全性相对较高;3.对提交内容的长度理论上无限制

    get/post是常见的两种请求方式

  表单元素:

    <input> 标签的属性和对应值

1 type: 2     text:文本输入框 3     password:密码输入框 4     radio:单选框 5     checkbox:多选框 6     submit:提交按钮 7     button:按钮(配合JS使用) 8         file:提交文件;form表单需要加上属性:enctype="multipart/form-data",meth="post" 9 name:表单提交相的键,注意和id属性的区别;name属性是和服务器通信时使用的名称;而id属性是浏览器端使用的名称,该属性主要为了方便客户端编程,在css和JavaScript中使用10 value:表单提交项的值,对于不同的输入类型,value属性的用法也不同11 type="button","reset","submit" -定义按钮上的显示的文本12 type="text","password","hidden" -定义输入字段的初始值13 type="checkbox","radio","image" -定义与输入相关联的值14 checked:radio和checkbox默认被选中15 readonly:只读 text和password16 disabled:对所有input都好使

上传文件注意:

  1、请求方式必须是post

  2、enctype="multipart/form-data"

1 def index(req): 2     print('get:', req.GET) 3     print('post:', req.POST) 4     print('FILSE:', req.FILES) 5     for item in req.FILES: 6         fileObj = req.FILES.get(item) 7         f = open(fileObj.name, 'wb') 8         iter_file = fileObj.chunks() 9         for line in iter_file:10             f.write(line)11         f.close()12     return HttpResponse('注册成功!')
上传文件

    <select> 下拉选项标签属性

1 name:表单提交项的键2 size:选项个数3 multiple:multiple4      为每一项加上分组

    <textarea> 文本域

name:表单提交项的键cols:文本域默认有多少列rows:文本域默认有多少行

    <lable>

1 

    <fieldset>

1 
2
登陆3
4

 四 、 CSS样式

1、CSS概述

  CSS是Cascading Style Sheets的简称,层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据分离。

2 、 引入方式

1 第一种:行内式(不推荐);在标记的Style属性中设定CSS样式 2 

hello world

3 4 5 第二种:嵌入式;将CSS样式集中写在网页的标签对的标签中 6 7 8 9
10 tile11 16 17 18 19 第三种:链接式;将一个.css文件引入到HTML中20
21 22 23 第四种:导入式;将一个独立的.css文件引入HTML文件中,导入式使用CSS规则引入外部CSS文件,

 3 、 CSS的选择器(Selector)

基础选择器:

1 *:  通用元素选择器,匹配任何元素  *{margin: 0;padding: 0;}2 E:  标签选择器,匹配所有E标签的元素    p{color: green}3 .info和E.info:class选择器,匹配所有class属性中包含info的元素 .info{background-color: green}4 #info和E#info:id选择器,匹配所有id属性等于footer的元素  #info{background-color: green}

组合选择器

1 E,F     多元素选择器,同时匹配所有E元素和F元素,E和F之间用逗号分隔     div,p{background-color: green}2 E F     后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔      li a{background-color: green}3 E>F     子元素选择器,匹配所有E元素的子元素F     div>p{color: green}4 E+F     毗邻元素选择器,匹配所有紧随E元素之后的同级元素F       div+p{color: green}

注:

  1、块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其他内联元素

  2、有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如:h1-6;p;dt

  3、li内可以包含div

  4、块级元素与块级元素并列、内联元素与内联元素并列

属性选择器

1 E[att]        匹配所有具有att属性的E元素,不考虑它的值        p[title]{color:#f00;}2 E[att=val]        匹配所有att属性等于"val"的E元素        div[class="error"]{color:#f00;}3 E[attr~=val]        匹配所有att属性具有多个空格分隔的值、其中一个值等于"val"的E元素4         td[class~="name"]{color:#f00;}5 E[attr^=val]        匹配属性值以制定值开头的每个元素        div[class^="test"]{background:#ffff00;}6 E[attr$=val]        匹配属性值以指定值结尾的每个元素        div[class$="test"]{background:#ffff00;}7 E[attr*=val]        匹配属性值中包含指定值的每个元素        div[class*="test"]{background:#ffff00;}

伪类(Pseudo-class)

  CSS伪类是用来给选择器添加一些特殊效果

  anchor伪类:专用于控制链接的显示效果

1 a:link(没有接触过的链接),用于定义了链接的常规状态 2 a:hover(鼠标放在链接上的状态),用于产生视觉效果 3 a:visited(访问过的链接),用于阅读文章,能清楚的判断已经访问过的链接 4 a:active(在链接上按下鼠标时的状态),用于表现鼠标按下时的链接状态 5 伪类选择器:伪类指的是标签的不同状态: 6         a==>点过状态、没点过的状态、鼠标悬浮状态、激活状态 7 a:link{color:#FF0000}    /*未访问的链接*/ 8 a:visited{color:#00FF00}    /*已访问的链接*/ 9 a:hover{color:#FF00FF}    /*鼠标移动到链接上*/10 a:active{color:#0000FF}    /*选定的链接*/

  before after伪类:

1 :before    p:before{content:"hello";color:red}    在每个

元素的内容之前插入内容2 :after p:aftere{content:"hello";color:red} 在每个

元素的内容之后插入内容

CSS优先级

样式表中的特殊性描述了不同规则的相对权重,它的基本规则如下:    1、内联样式表的权值最高    style=""    2、统计选择符中的ID属性个数    #id    3、统计选择符中的class属性个数    .class    4、统计选择符中的HTML标签名个数    p
1 12 

hello world

优先级

CSS继承

  继承是CSS的一个主要特征,它是依赖于祖先-后代的关系。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。如一个body定义了颜色也会应用到段落的文本中。

1 2 

hello world!

3

  还可以覆盖其继承样式

1 2 

hello world!

3

  有一些属性不能被继承,如:border,margin,padding,background等

1  2  3  4     
5 Title 6 11 12 13 14 15
hello

yuan

16 17

CSS常用属性

  颜色属性

1 
hello world!
2
hello world!
3
hello world!
4
hello world!

  字体属性

1 

hello world!

2

hello world!

3

hello world!

4

hello world!

5

hello world!

6

hello world!

  背景属性

1 background-color:cornflowerblue2 background-image:url('1.jpg');3 background-repeat:no-repeat;(repeat:平铺满)4 background-position:reght top(20px 20px);(横向:left center right)(纵向:top center bottom)5 简写:6 7     

注:如果将背景属性加在body上,要给body加上一个height,否则结果异常,因为body为空,无法撑起背景图片;另外还要设置一个width=100px

  文本属性

1 font-size:10px2 text-align:center;横向排列3 line-height:200px;文本行高4 vertical-align:-4px;设置元素内容的垂直对齐方式,只对行内元素有效,对块级元素无效5 text-indent:150px;首行缩进6 letter-spacing:10px;7 word-spacing:20px8 text-transform:capitalize;

  边框属性

1 border-style:solid;2 border-color:chartreuse;3 border-width:20px;4 简写:border:30px rebeccapurple solid

  列表属性

1     

  dispaly属性

1 none2 block3 inline

  display:inline-block可做列表布局,其中的类似于图片间的间隙小bug可以通过如下设置解决

1 #outer{2     border:3px dashed;3     word-spacing:-5px;4 }
1 inline-block默认的空格符就是标签与标签之间的空隙造成的。2 (一)通过margin:-3解决3 (二)给几个标签加上一个父级div,然后设置样式4 div{5   word-spacing:-5px;  6 }
解决inline-block间隙

 

  外边距和内边距

   - margin:用于控制元素与元素之间的距离;基本用途就是控制元素周围空间的间隔,从而达到视觉上的相互隔开

  - padding:用于控制内容与边框之间的距离;

  - Border(边框):围绕在内边距和内容外的边框;

  - Content(内容):盒子的内容,显示文本和图像。

当指定一个CSS元素的宽度和高度属性时,只需设置内容区域的宽度和高度。

1 margin:10px 5px 15px 20px;--------上    右    下    左2 margin:10px 5 px 15px;        --------上    右左    下3 margin:10px 5px;                 -------- 上下    右左4 margin:10px;                        -------- 上右下左
1 父级div中没有border,padding,inline content,子级div的margin会一直向上找,直到找到某个标签包括border,padding,inline content中的其中一个,然后此div进行margin。 2  3  4  5 解决方案: 6 第一种: 7     border:1px    solid    transparent 8 第二种: 9     padding:1px10 第三种:11 over-flow:hidden
边界塌陷(边界重叠)解决方案

  float属性

  block元素通常被视为独立的一块,独占一行,多个block元素会各自新起一行,默认block元素宽度自动填满其父元素宽度。block元素可以设置width、height、margin、padding属性。

  inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到排满,才会新换一行,宽度随元素的内容而变化。inline元素设置width和height属性无效。inline元素的margin和padding属性。水平方向的padding-left,padding-right,margin-left,margin-right都产生边距效果;但竖直方向的padding-top,padding-bottom,margin-top,margin-bottom不会产生边距效果。

  块级元素:div,form,table,p,pre,h1-h5,dl,ol,ul等

  内联元素:span,a,strong,em,label,input,select,textarea,img,br等

  文档流:指的是元素排版布局中,元素会自动从左往右,从上往下的流式排列。

  脱离文档流:将元素从普通的布局排版中拿走,其他盒子在定位的时候,会当作脱离文档流的元素不存在而进行定位。

  只有绝对定位absolute和浮动float才会脱离文档流。

  注:部分无视和完全无视的区别?使用float脱离文档流时,其他盒子会无视这个元素,但其他盒子内的文本依然会为这个元素让出位置,环绕在周围。而对于使用absolute、position脱离文档流的元素,其他盒子与其他盒子内的文本都会无视他。

  浮动:浮动的框可以向左或向右移动,直到它的外边距碰到包含框或另一个浮动框的边框为止。由于浮动框不在文档的普通流中,所以文档的普通流中的浮动框之后的块框表现得就像浮动框不存在一样。当初float被设计的时候就是用来完成文本环绕的效果,所以文本不会被挡住,这是float的特性,即float是一种不彻底的脱离文档流方式。无论多么复杂的布局,其基本出发点均是:“如何在一行显示多个div元素”。

  清除浮动:在非IE浏览器下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这种现象叫浮动的溢出,可以用CSS清除浮动。

1  2  3  4     
5 Title 6 32 33 34 35
36
box1 向左浮动
37
box2 向右浮动
38
39
box3
40 41 42
案例
1 clear语法:none | left | right | both2 none:默认值,允许两边都可以有浮动对象3 left:不允许左边有浮动对象4 right:不允许右边有浮动对象5 both:不允许有浮动对象6 注:clear属性只对自身起作用,而不会影响其他元素。若一个元素的右侧有一个浮动对象,而这个元素设置了不允许右边有浮动(即clear:right),那么这个元素会自动下移一格,从而达到该元素右边没有浮动对象的目的。

方式一:

1 .clearfix:after{ 2     display:block;  # 将该元素转换为块级元素 3     clear:both;  # 清除左右两边浮动 4     visibility:hidden;  # 可见度设置隐藏。注:仍然占据空间,只是看不到而已 5     line-height:0;  # 行号为0 6     height:0;  # 高度为0 7     font-size:0;  # 字体大小为0 8 } 9 10 11 .clearfix{12     *zoom:1;  # 针对IE6,因为IE6不支持:after伪类,zoom:1让IE6的元素可以清除浮动来包裹内部元素13 }
1  2  3  4     
5 Title 6 32 33 34 35
36
box1 向左浮动
37
box2 向右浮动
38
39
40
box3
41 42 43
View Code
1  2  3  4     
5 Title 6 37 38 39 40
41
box1 向左浮动
42
box2 向右浮动
43
44
box3
45 46 47
View Code

方式二:

1 overflow:hidden;  # 将超出的部分裁切隐藏,float的元素虽然不在普通流中,但是他浮动在普通流之上,可以把普通流元素+浮动元素想象成一个立方体。如果没有明确设定包含容器高度的情况下,它要计算内容的全部高度才能确定在什么位置hidden,这样浮动元素的高度就要被计算进去。这样包含容器就会被撑开,清楚浮动。

   position定位

1、static:默认值,无定位,不能当作绝对定位的参照物,并且设置标签对象的left、top等值是不起作用的。

2、relative:相对定位,相对于该元素在文档流中的原始位置,即以自己原始位置为参照物。

3、absolute:绝对定位,元素定位后生成一个块级框,不论原来他在正常流中生成何种类型的框。

4、fixed:对象脱离正常文档流,使用top、right、bottom、left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。

注:若元素设置了 position:absolute/fixed;该元素就不能设置float;但是relative可以,因为它原本所占的空间仍然占据文档流。

5、margin属性布局绝对定位元素:margin-bottom和margin-right的值不对文档流中的元素产生影响,因为该元素已经脱离了文档流。

 五 、 JavaScript概述

  JavaScript的历史

  •1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中),后将其改名为Scriptease(客户端执行的语言)

  •Netscape(网景)接受Nombas的理念,(Brendan Eich)在其Netscape Navigator 2.0产品中开发出一套livescipt的脚本语言。sun和Netscape共同完成,后改名叫Javascript

  •微软随后模仿在其IE3.0产品中搭载了一个JavaScript的克隆版叫Jscript

  •为了统一三家,ECMA(欧洲计算机制造协会)定义了ECMA-262规范。国际标准化组织及国际电工委员会(ISO/IEC)也采纳ECMAScript作为标准(ISO/IEC-16262)。从此,Web浏览器就开始努力将ECMAScript作为JavaScript实现的基础。EcmaScript是规范。

  ECMAScript

  尽管ECMAScript是一个重要的标准,但它并不是JavaScript唯一的部分,当然,也不是唯一标准化的部分。实际上,一个完整的JavaScript实现是由以下3个不同部分组成的:

  •核心(ECMAScript)

  •文档对象模型(DOM) Document Object Model(整合JS,CSS,HTML)

  •浏览器对象模型(BOM) Broswer Object Model(整合JS和浏览器)

  •JavaScript在开发中绝对多数情况是基于对象的。也是面向对象的。

ECMAScript描述了以下内容:

1、语法

2、类型

3、语句

4、关键词

5、保留字

6、运算符

7、对象(封装|继承|多态)基于对象的语言

  JavaScript的两种引入方式

1  2  3  4     
5 Title 6 7 8 9 10 11
12 15 16
17 18

  JavaScript基础

   变量

1 

  基本规范

1、每行结束可以不加分号(建议每行结束加上“;”)

2、单行注释(“//”)和多行注释(“/**/”)

  命名规范

 

1 Camel 标记法2 首字母是小写的,接下来的字母都以大写字符开头。例如:3 var myTestValue = 0, mySecondValue = "hi";4 Pascal 标记法5 首字母是大写的,接下来的字母都以大写字符开头。例如:6 Var MyTestValue = 0, MySecondValue = "hi";7 匈牙利类型标记法8 在以 Pascal 标记法命名的变量前附加一个小写字母(或小写字母序列),说明该变量的类型。例如,i 表示整数,s 表示字符串,如下所示“9 Var iMyTestValue = 0, sMySecondValue = "hi";

 

  常量和标识符

1、常量(程序中出现的数据值)

2、标识符:

  ·只允许字母、数字、下划线、$;不能数字开头

  ·用于表示函数、变量的名字

  ·JavaScript语言中代表特定含义的词称为保留字,不允许程序再次定义为标识符

   数据类型

1 数字类型(Number):不区分整型和浮点型数值,所有的数字都采用64位浮点格式存储 2 字符串(String):字符串常量首位由单引号或双引号括起 3 常用的转义字符:换行(\n)、单引号(\')、双引号(\'')、右划线(\\) 4 布尔值(Boolean):仅有两个值:true和false,也代表1和0,主要用于JavaScript的控制语句中,例如: 5     if(x==1){ 6       y=y+1   7     } 8     else{ 9       y=y-1  10     }11 Null类型:如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常为null12 Undefined类型:当声明的变量未初始化时,该变量的默认值为 undefined;当函数无明确返回值时,返回的也是 undefined
1 - Boolean(布尔),取值:只有两种值:true或false 2  3 - Number(数字),取值:所有数字,包含整数小数等,范围相当于double 4  5 - String(字符串),取值:所有字符串 6  7 - Undefined(未定义),取值:只有一个值undefined 8  9 - Null(空对象),取值:只有一个值null10 11 - Object(对象类型),取值:任何对象、Array、Function等
JavaScript数据类型

  数据类型的转换

1 JavaScript:变量在声明的时候并不需要指定数据类型,变量只有在赋值的时候才会确定数据类型,表达式中包含不同类型数据则在计算过程中会强制进行类别转换2 3 数字+字符串:数字转换为字符串4 5 数字+布尔值:true转换为1,false转换为06 7 字符串+布尔值:布尔值转换为字符串true或false

  强制类型转换函数

1 函数parseInt:   强制转换成整数   例如parseInt("6.12")=6  ; parseInt(“12a")=12 ; parseInt(“a12")=NaN  ;parseInt(“1a2")=1 注:NaN-->Not a Number,是number的一种类型2 3 函数parseFloat: 强制转换成浮点数  parseFloat("6.12")=6.124 5 函数eval:       将字符串强制转换为表达式并返回结果 eval("1+1")=2 ; eval("1<2")=true
1     
1     
isNaN()函数,判断类型是否转换成功!

  类型查询函数(typeof)

   ECMAScript提供了一个typeof运算符来判断一个值的某种类型

1 typeof:的类型(string/number/boolean/object)2 typeof("test"+3)---->string3 typeof(null)        ---->object4 typeof(true+1)   ---->number5 typeof(true-false) --->number

   ECMAScript运算符

1 加(+)、减(-)、乘(*)、除(/)、余数(%)、递增(++)、递减(--)2 等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、与(&&)、或(||)、非(!)
1 1、相等符号: ==  、 !=2     - 对于==两边的表达式,如果类型相同,则直接比较。3     - 对于==两边的表达式,如果类型不同,则先试图将==两边的运算符转换为String、Boolean、Number这些相同的数据类型然后再判断是否相等。4     - ==认为null与undefined、unll与null、undefined、undefined是相等的。5 6 2、 完全相等运算符(恒等运算符):=== 、 !==7     - ===运算符判断前不进行类型转换,并且===两边必须类型相同,值也相同的请款修改才返回true。
==与===
1 1.如果==两边都是字符串类型,那么必须这两个字符串完全相同才会返回true2 2.如果==两边的两个变量指向了同一个对象,那么也返回true3 3.如果==两边是一个字符串类型,一个数字类型,那么js引擎会尝试把其中的字符串类型尝试转换为数字类型后再作比较。4 4.如果==两边一个是布尔类型,一个数字类型,则也会尝试把其中的布尔类型尝试转换为数字类型后再作比较。5 5.如果==两边其中一个是String或Number类型,而另外一个是object类型,那么判断相等之前会先将Object转换为String或Number类型后在与另外一个值比较。6 6.new String('a')=='a' 返回结果是true,而new string('a')==new string('a')是false
1     
1 Undefined值表示一种未知的状态 2     1.声明变量但未赋值时,变量的值为Undefined 3     2.方法没有return语句返回值时,返回Undefined 4     3.未声明的变量,通过typeof()检测变量时,返回“Undefined”字符串。 5     4.访问不存在的属性时返回Undefined,例如:Window.xxx返回Undefined。 6  7 Unll值: 8     1.null表示一个有意义的值,表示“无值”或“无”对象,此时变量的状态为“已知状态”,即Null。可以通过设置对象名为Null值,来释放对对象的引用,以便浏览器的垃圾回收机制可以回收内存。 9 10 11 注1:null==undefined结果为True;null===undefined结果为False12 13 注2:把null转换为数字,结果为0.而把undefined转换为数字结果为NaN
1     
1 

 

  控制语句

1 if(表达式){2 ......3 }else{4 .....5 }
1 if(表达式1){2 ....3 }else if(表达式2){4 ......5 }else if(表达式3){6 ....7 }else{8 ....9 }

  switch 选择控制语句

1 switch(表达式){2   case 值1:语句1;break;3   case 值2:语句2;break;4   case 值3:语句3;break;5   default:语句4;        6 }
1 总结:2     1.switch用来根据一个整型值进行多路分支,并且编译器可以对多路分支进行优化3     2.switch case只将表达式计算一次,然后将表达式的值与每个case的值比较,进而选择执行哪一个case的语句块4     3.if else 的判断条件范围较广,每个语句基本上独立的,每次判断时都要条件加载一次5 6 所以在多路分支时用switch比if else if结构效率高
switch比if else结构更加简洁,可读性更强,效率高

  for 循环语句

1 for(初始化值;条件;增量){2   .....  3 }4 实现条件循环,当条件成立时,执行语句,否则跳出循环体
1 doms=document.getElementsByTagName("p"); 2  3     for (var i in doms){ 4        console.log(i); // 0 1 2 length item namedItem 5        //console.log(doms[i]) 6     } 7  8 //循环的是你获取的th一个DOM元素集,for in用来循环对象的所有属性,dom元素集包含了你上面输出的属性。 9 //如果你只要循环dom对象的话,可以用for循环:10 11     for (var i=0;i
获取标签的值

  while 循环控制语句

1 while(条件){2   ....  3 }4 功能和for类似,当条件成立循环执行语句,否则跳出循环

  try catch 异常处理

1 try{ 2   ....   3 } 4 catch(e){ 5   try代码块中抛出异常,执行此处代码   6 } 7 finally{ 8   无论try中代码是否有异常抛出 ,finally代码块中的始终会执行 9 }10 11 注:主动抛出异常 throw Error('xxxxx')

  ECMA对象

  对象的概念与分类:

•由ECMAScript定义的本地对象,独立于宿主环境的ECMAScript实体提供的对象(native object)

•ECMAScript实现提供的、独立于宿主环境的所有对象,在ECMAScript程序开始执行时出现。意味着开发者不必明确实例化内置对象,它已被实例化了。ECMA-262只定义了两个内置对象,即Global和Math(它们也是本地对象,根据定义,每个内置对象都是本地对象)。(built-in object)

•所有非本地对象都是宿主对象(host object),即由ECMAScript实现的宿主环境提供的对象。所有BOM和DOM对象都是宿主对象。

object对象:ECMAScript的所有对象都由这个对象继承而来;Object对象中的所有属性和方法都会出现在其他对象中

1 ToString():返回对象 的原始字符串表示2 ValueOf():返回最适合该对象的原始值。对于许多对象,该方法返回的值都与ToString()的返回值相同。

11种内置对象

Array、String、Date、Math、Boolean、Number、Function、Global、Error、RegExp、Object注:在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量。String、Math、Array、Date、RegExp都是JavaScript中重要的内置对象,在JavaScript程序大多数功能都是通过对象实现的,

1     创建字符串对象:  2 var str1 = "hello world";  3 alert(str1.length);  4 alert(str1.substr(1,5));  5 注:调用字符串的对象属性或方法时自动创建对象,用完就丢弃  6   7   8     手工创建字符串对象:  9 var str1 = new String("hello world"); 10 alert(str1.length); 11 alert(str1.substr(1,5)); 12 注:采用new创建字符串对象str1,全局有效 13  14  15 length:获取字符串的长度(str1.length) 16  17  18     大小写转换: 19 var str1 = "abcDEF" 20 小写:str1.toLowerCase() 21 大写:str1.toUpperCase() 22  23  24     获取指定字符: 25 格式: 26     x.charAt(index) 27     x.charCodeAt(index) 28 注: 29 x:代表字符串对象 30 index:代表字符串位置,从0开始编号 31 charAt:返回index位置的字符 32 charCodeAt:返回index位置的Unicode编码 33  34  35     查询字符串: 36 格式1: 37     x.indexof(findstr,index) 38     x.lastIndexOf(findstr) 39  40 var str1 = "welcom to the world of JS!"; 41 var str2 = str1.indexof("c");  # 结果为3,从0开始计数 42 var str3 = str1.lastIndexOf("c")  # 结果为3,从后开始数,第一次出现c的位置 43  44 格式2: 45     x.match(regexp) 46     x.search(regexp) 47 注: 48 x:代表字符串对象 49 regexp:代表正则表达式或字符串 50 match:返回匹配字符串的数组,如果没有匹配则返回null 51 search:返回匹配字符串的首字符位置索引 52  53 var str1 = "welcome to the world of JS!"; 54 var str2=str1.match("world"); 55 var str3=str1.search("world"); 56 alert(str2[0])  # 结果为"world" 57 alert(str3)  # 结果为15 58  59  60     截取字符串: 61 格式1: 62 x.substr(start,length) 63 x.substring(start,end) 64 注: 65 x:代表字符串对象 66 start:表示开始位置 67 length:表示截取长度 68 end:结束位置加1,从0开始计数 69 var str1 = "abcdef" 70 str1.substr(2,2)  # 结果:cd 71 str1.substring(2,2)  # 结果:cd 72  73 格式2: 74 //x.slice(start, end) 75 var str1="abcdefgh"; 76 var str2=str1.slice(2,4); 77 var str3=str1.slice(4); 78 var str4=str1.slice(2,-1); 79 var str5=str1.slice(-3,-1); 80 alert(str2); 81 //结果为"cd" 82 alert(str3); 83 //结果为"efgh" 84 alert(str4); 85 //结果为"cdefg" 86 alert(str5); 87 //结果为"fg" 88  89  90     替换字符串: 91 var str1 = "abxy"; 92 str1.replace("xy","cd")  # 结果:abcd 93  94  95     分割字符串: 96 var str1 = "一,二,三"; 97 str1.split(",");  # 结果:一二三 98  99 100     连接字符串:101 格式:102 y=x.concat(addstr)103 注:104 x:代表字符串对象105 addstr:添加字符串106 107 var str1 = "abc"108 str1.concat("def")  # 结果abcdef
String对象

1 创建数组对象:  2 格式1:  3 var iArrNum = [1,2,3]  4   5 格式2:  6 new Array();    # 不指定数组元素个数  7 new Array(size);  # 指定数组元素个数  8   9  10 二维数组: 11 var cnweek=new Array(7); 12 for (var i=0;i<=6;i++){ 13     cnweek[i]=new Array(2); 14 } 15 cnweek[0][0]="星期日"; 16 cnweek[0][1]="Sunday"; 17 cnweek[1][0]="星期一"; 18 cnweek[1][1]="Monday"; 19 ... 20 cnweek[6][0]="星期六"; 21 cnweek[6][1]="Saturday"; 22  23  24     length:获取数组的个数 25  26  27     连接数组:join 28 格式: 29 x.join(bystr) 30 注: 31 x:代表数组对象 32 bystr:作为连接数组中元素的字符串 33  34 var iArrNum = [1,2,3] 35 iArrNum.join("-")  # 结果:1-2-3 36  37  38     连接数组:concat 39 var a = [1,2,3]l 40 var a = new Array(1,2,3); 41 a.concat(4,5)  # 结果:1,2,3,4,5 42  43  44     数组排序:reverse | sort 45 var iArrNum = [1,3,5,2,9]; 46 iArrNum.reverse();  # 反转数组:9,2,5,3,1 47 iArrNum.sort();  # 从小到大排序:1,2,3,5,9 48  49  50     数组切片:slice 51 注: 52 x代表数组对象 53 start表示开始位置索引 54 end是结束位置下一数组元素索引编号 55 第一个数组元素索引为0 56 start、end可为负数,-1代表最后一个数组元素 57 end省略则相当于从start位置截取以后所有数组元素 58  59 var arr1=['a','b','c','d','e','f','g','h']; 60 var arr2=arr1.slice(2,4); 61 var arr3=arr1.slice(4); 62 var arr4=arr1.slice(2,-1); 63  64 alert(arr2.toString()); 65 //结果为"c,d"  66 alert(arr3.toString()); 67 //结果为"e,f,g,h" 68 alert(arr4.toString()); 69 //结果为"c,d,e,f,g" 70  71  72     删除子数组: 73 格式 74 x. splice(start, deleteCount, value, ...) 75 注: 76 x代表数组对象 77 splice的主要用途是对数组指定位置进行删除和插入 78 start表示开始位置索引 79 deleteCount删除数组元素的个数 80 value表示在删除位置插入的数组元素 81 value参数可以省略 82  83  84 var a = [1,2,3,4,5,6,7,8]; 85 a.splice(1,2); 86 //a变为 [1,4,5,6,7,8] 87 alert(a.toString()); 88 a.splice(1,1); 89  //a变为[1,5,6,7,8] 90 alert(a.toString()); 91 a.splice(1,0,2,3); 92  //a变为[1,2,3,5,6,7,8] 93  94  95     数组的进出栈操作一: 96 //push pop这两个方法模拟的是一个栈操作 97  98 //x.push(value, ...)  压栈 99 //x.pop()             弹栈      100 //使用注解101 //102 //x代表数组对象103 //value可以为字符串、数字、数组等任何值104 //push是将value值添加到数组x的结尾105 //pop是将数组x的最后一个元素删除106 107 108 var arr1=[1,2,3];109 arr1.push(4,5);110 alert(arr1);111 //结果为"1,2,3,4,5"112 arr1.push([6,7]);113 alert(arr1)114 //结果为"1,2,3,4,5,6,7"115 arr1.pop();116 alert(arr1);117 //结果为"1,2,3,4,5"118 119 120     数组的进出栈操作二:121 // unshift shift 122 //x.unshift(value,...)123 //x.shift()124 //使用注解125 //126 //x代表数组对象127 //value可以为字符串、数字、数组等任何值128 //unshift是将value值插入到数组x的开始129 //shift是将数组x的第一个元素删除130 131 var arr1=[1,2,3];132 arr1.unshift(4,5);133 alert(arr1);134 //结果为"4,5,1,2,3"135 arr1. unshift([6,7]);136 alert(arr1);137 //结果为"6,7,4,5,1,2,3"138 arr1.shift();139 alert(arr1);140 //结果为"4,5,1,2,3"
Array对象
1 //  js中数组的特性2          //java中数组的特性,  规定是什么类型的数组,就只能装什么类型.只有一种类型.3          //js中的数组特性1: js中的数组可以装任意类型,没有任何限制.4          //js中的数组特性2: js中的数组,长度是随着下标变化的.用到多长就有多长.5          var arr5 = ['abc',123,1.14,true,null,undefined,new String('1213'),new Function('a','b','alert(a+b)')];6         /*  alert(arr5.length);//87          arr5[10] = "hahaha";8          alert(arr5.length); //119          alert(arr5[9]);// undefined */
JS数组特性总结

 

1     创建Date对象: 2 //方法1:不指定参数 3 var nowd1=new Date(); 4 alert(nowd1.toLocaleString( )); 5 //方法2:参数为日期字符串 6 var nowd2=new Date("2004/3/20 11:12"); 7 alert(nowd2.toLocaleString( )); 8 var nowd3=new Date("04/03/20 11:12"); 9 alert(nowd3.toLocaleString( ));10 //方法3:参数为毫秒数11 var nowd3=new Date(5000);12 alert(nowd3.toLocaleString( ));13 alert(nowd3.toUTCString());14 15 //方法4:参数为年月日小时分钟秒毫秒16 var nowd4=new Date(2004,2,20,11,12,0,300);17 alert(nowd4.toLocaleString( ));18 //毫秒并不直接显示19 20 21     获取日期和时间:22 获取日期和时间23 getDate()                 获取日24 getDay ()                 获取星期25 getMonth ()               获取月(0-11)26 getFullYear ()            获取完整年份27 getYear ()                获取年28 getHours ()               获取小时29 getMinutes ()             获取分钟30 getSeconds ()             获取秒31 getMilliseconds ()        获取毫秒32 getTime ()                返回累计毫秒数(从1970/1/1午夜)
Date对象
1 //设置日期和时间 2 //setDate(day_of_month)       设置日 3 //setMonth (month)                 设置月 4 //setFullYear (year)               设置年 5 //setHours (hour)         设置小时 6 //setMinutes (minute)     设置分钟 7 //setSeconds (second)     设置秒 8 //setMillliseconds (ms)       设置毫秒(0-999) 9 //setTime (allms)     设置累计毫秒(从1970/1/1午夜)10     11 var x=new Date();12 x.setFullYear (1997);    //设置年199713 x.setMonth(7);        //设置月714 x.setDate(1);        //设置日115 x.setHours(5);        //设置小时516 x.setMinutes(12);    //设置分钟1217 x.setSeconds(54);    //设置秒5418 x.setMilliseconds(230);        //设置毫秒23019 document.write(x.toLocaleString( )+"
");20 //返回1997年8月1日5点12分54秒21 22 x.setTime(870409430000); //设置累计毫秒数23 document.write(x.toLocaleString( )+"
");24 //返回1997年8月1日12点23分50秒
设置日期和时间
1 日期和时间的转换: 2  3 getTimezoneOffset():8个时区×15度×4分/度=480; 4 返回本地时间与GMT的时间差,以分钟为单位 5 toUTCString() 6 返回国际标准时间字符串 7 toLocalString() 8 返回本地格式时间字符串 9 Date.parse(x)10 返回累计毫秒数(从1970/1/1午夜到本地时间)11 Date.UTC(x)12 返回累计毫秒数(从1970/1/1午夜到国际时间)
日期和时间的转换
1 function getCurrentDate(){ 2         //1. 创建Date对象 3         var date = new Date(); //没有填入任何参数那么就是当前时间 4         //2. 获得当前年份 5         var year = date.getFullYear(); 6         //3. 获得当前月份 js中月份是从0到11. 7         var month = date.getMonth()+1; 8         //4. 获得当前日 9         var day = date.getDate();10         //5. 获得当前小时11         var hour = date.getHours();12         //6. 获得当前分钟13         var min = date.getMinutes();14         //7. 获得当前秒15         var sec = date.getSeconds();16         //8. 获得当前星期17         var week = date.getDay(); //没有getWeek18         // 2014年06月18日 15:40:30 星期三19         return year+"年"+changeNum(month)+"月"+day+"日 "+hour+":"+min+":"+sec+" "+parseWeek(week);20     }21 22 alert(getCurrentDate());23 24 //解决 自动补齐成两位数字的方法25     function changeNum(num){26     if(num < 10){27         return "0"+num;28     }else{29         return num;30     }31 32 }33 //将数字 0~6 转换成 星期日到星期六34     function parseWeek(week){35     var arr = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];36     //             0      1      2      3 .............37     return arr[week];38 }
小练习
1 //RegExp对象 2     // 在表单验证时使用该对象验证用户填入的字符串是否符合规则. 3     //创建正则对象方式1  参数1 正则表达式  参数2 验证模式  g global / i 忽略大小写. //参数2一般填写g就可以,也有“gi”. 4     // 用户名 首字母必须是英文, 除了第一位其他只能是英文数字和_ . 长度最短不能少于6位 最长不能超过12位 5     //----------------------------创建方式1 6     /* var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$","g"); 7     // 8     //验证字符串 9     var str = "bc123";10     alert(reg1.test(str));// true11     12     //----------------------------创建方式2  /填写正则表达式/匹配模式;13     var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/g;14     15     alert(reg2.test(str));// true16      */17     //-------------------------------正则对象的方法-------------------18         //test方法  ==>  测试一个字符串是否复合 正则规则. 返回值是true 和false.19     20     //-------------------------String 中与正则结合的4个方法------------------.21     // macth search split replace22     var str = "hello world";23     24     //alert(str.match(/o/g)); //查找字符串中 复合正则的 内容.25     //alert(str.search(/h/g));// 0  查找字符串中符合正则表达式的内容位置26     //alert(str.split(/o/g)); // 按照正则表达式对字符串进行切割. 返回数组;27     alert(str.replace(/o/g, "s")); // hells wsrld  对字符串按照正则进行替换.
RegExp对象
1 //Math对象 2     //该对象中的属性方法 和数学有关. 3     //Math是内置对象 , 与Global的不同之处是, 在调用时 需要打出 "Math."前缀. 4     //属性学习: 5     //alert(Math.PI); 6     //方法学习: 7         //alert(Math.random()); // 获得随机数 0~1 不包括1. 8         //alert(Math.round(1.5)); // 四舍五入 9         //练习:获取1-100的随机整数,包括1和10010              //var num=Math.random();11             //num=num*10;12             //num=Math.round(num);13             // alert(num)14         //============max  min=========================15         /* alert(Math.max(1,2));// 216         alert(Math.min(1,2));// 1 */17         //-------------pow--------------------------------18         alert(Math.pow(2,4));// pow 计算参数1 的参数2 次方.19         20 21 22 23 abs(x)    返回数的绝对值。24 exp(x)    返回 e 的指数。25 floor(x)对数进行下舍入。26 log(x)    返回数的自然对数(底为e)。27 max(x,y)    返回 x 和 y 中的最高值。28 min(x,y)    返回 x 和 y 中的最低值。29 pow(x,y)    返回 x 的 y 次幂。30 random()    返回 0 ~ 1 之间的随机数。31 round(x)    把数四舍五入为最接近的整数。32 sin(x)    返回数的正弦。33 sqrt(x)    返回数的平方根。34 tan(x)    返回角的正切。
Math对象

   Function对象

函数的定义:

1     function 函数名(参数) {2         函数体3     }

作用:

  •可以使变量、常量、表达式作为函数调用的参数

  •函数由关键字function定义

  •函数名的定义规则与标识符一致

  •返回值必须使用return

1 第一种写法:2 function 函数名 (参数){3     
函数体;4    return 返回值;5 }6 7 第二种写法:8 var 函数名 = new Function("参数1","参数n","function_body");
基本语法

注:JS的函数加载执行与Python不同,它是整体加载完才会执行,所以函数声明上面或下面都可以。

Function对象的length属性:函数属于引用类型;获取函数期望的参数个数(alert(func1.length))

运算符void()的作用:拦截方法的返回值(alert(void(func1(1,2))))

1 function func1(a,b){ 2  3     alert(a+b); 4 } 5  6     func1(1,2);  //3 7     func1(1,2,3);//3 8     func1(1);    //NaN 9     func1();     //NaN10 11     //只要函数名写对即可,参数怎么填都不报错.
函数的调用
1 function add(a,b){ 2  3         console.log(a+b);//3 4         console.log(arguments.length);//2 5         console.log(arguments);//[1,2] 6  7     } 8     add(1,2) 9 10     ------------------arguments的用处1 ------------------11     function nxAdd(){12         var result=0;13         for (var num in arguments){14             result+=arguments[num]15         }16         alert(result)17 18     }19 20     nxAdd(1,2,3,4,5)21 22 //     ------------------arguments的用处2 ------------------23 24     function f(a,b,c){25         if (arguments.length!=3){26             throw new Error("function f called with "+arguments.length+" arguments,but it just need 3 arguments")27         }28         else {29             alert("success!")30         }31     }32 33     f(1,2,3,4,5)
函数的内置对象arguments
1 // 匿名函数 2     var func = function(arg){ 3         return "tony"; 4     } 5  6 // 匿名函数的应用 7     (function(){ 8         alert("tony"); 9     } )()10 11     (function(arg){12         console.log(arg);13     })('123')
匿名函数

 匿名函数练习:

1     

  BOM对象

  BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作。使用BOM,开发者可以移动窗体、改变状态栏中的文本以及执行其他与页面内容不直接相关的动作。

  Window对象

1 Window对象2     所有浏览器都支持window对象3     概念上讲:一个html文档对应一个window对象4     功能上讲:控制浏览器窗口5     使用上讲:window对象不需要创建对象,直接使用即可。

  Window对象方法

1 alert():显示带有一段消息和一个确认按钮的警告框 2  3 confirm():显示带有一段消息以及确认按钮和取消的对话框 4  5 prompt():显示可提示用户输入的对话框 6  7 open():打开一个新的浏览器窗体或查找一个已命名的窗体 8  9 close():关闭浏览器窗口10 11 setInterval():按照指定的周期(毫秒)来调用函数或计算表达式12 13 clearInterval():取消由setInterval()设置的timeout14 15 setTimeout():在指定的毫秒数后调用函数或计算表达式16 17 clearTimeout():取消由setTimeout()方法设置的tiemout18 19 scrollTo():把内容滚动到指定的坐标
1  2  3  4     
5 Title 6 12 13 14 15 16 17 49
小练习

  History对象

History属性:

  •History对象包含用户(在浏览器窗口中)访问过的URL。

  •History对象是Window对象的一部分,可通过Window.history属性对其访问

1 length:返回浏览器历史列表中的URL数量2 3 back():加载history列表中的前一个URL4 5 forward():加载history列表中的下一个URL6 7 go():加载history列表中的某个具体页面
1  2  3  4     
5 Title1 6 7 8 click 9 10 11 12
JS_history1.html
1  2  3  4     
5 Title2 6 7 8 9 10 11
JS_history2.html

  Location对象

Location对象包含有关当前URL的信息

Location对象是Window对象的一个部分,可通过Window.location属性来访问

1 location.assign(URL)2 3 location.reload()4 5 location.replace(newURL)
1  2  3  4     
5 Title 6 7 8 9 10 11 22
location用法

  DOM对象

什么是DOM?

  DOM是W3C(万维网联盟)的标准。DOM定义了访问HTML和XML文档的标准。

  W3C文档对象模型(DOM)是中立于平台和预言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。

  W3C DOM标准被分为3个不同的部分:

    • 核心 DOM - 针对任何结构化文档的标准模型

    • XML DOM - 针对XML文档的标准模型(定义了所有XML元素的对象和属性,以及访问它们的方法)

    • HTML DOM - 针对HTML文档的标准模型(定义了所有HTML元素的对象和属性,以及访问它们的方法)

  DOM节点

1 HTML文档中的所有内容都有节点(NODE): 2     - 整个文档是一个文档节点(document对象) 3     - 每个HTML元素是元素节点(element对象) 4     - HTML元素内的文本是文本节点(text对象) 5     - 每个HTML属性是属性节点(attribute对象) 6     - 注释是注释节点(comment对象) 7  8  9 节点(自身)属性:10     - attributes:节点(元素)的属性节点11     - nodeType:节点类型12     - nodeValue:节点值13     - nodeName:节点名称14     - innerHTML:节点(元素)的文本值15 16 17 导航属性:18     - parentNode:节点(元素)的父节点(推荐)19     - firstChild:节点下第一个子元素20     - lastChild:节点下最后一个子元素21     - childNodes:节点(元素)的子节点
1 parentElement              // 父节点标签元素 2  3 children                        // 所有子标签 4    5 firstElementChild          // 第一个子标签元素 6  7 lastElementChild           // 最后一个子标签元素 8  9 nextElementtSibling       // 下一个兄弟标签元素10 11 previousElementSibling  // 上一个兄弟标签元素
导航属性
1  2  3  4     
5 Title 6 7 8
9

hello p

10
hello div
11
12 13 21
节点属性
1 parentElement        //父系节点标签元素 2  3 children                 // 所有子标签 4  5 firstElementChild    //第一个子标签元素 6  7 lastElementChild    //最后一个子标签元素 8  9 nextElementtSibling //下一个兄弟标签元素10 11 previousElementSibling //上一个兄弟标签元素
推荐导航属性

节点关系图:

1 访问HTML元素(节点),访问HTML元素等同于访问节点,我们能够以不同的方式来访问HTML元素:2 页面查找:3     - 通过使用 getElementById() 方法4     - 通过使用 getElementsByTagName() 方法5     - 通过使用 getElementsByClassName() 方法6     - 通过使用 getElementsByName() 方法
1  2  3  4     
5 Title 6 7 8
9

hello p

10
hello div11
div
12
click13
14
15 16 45
View Code

  HTML DOM Event(事件)

  HTML 4.0 的新特征之一是有能力使HTML事件触发浏览器中的动作(action),比如当用户点击某个HTML元素时启动一段JavaScript。

1 onclick:当用户点击某个对象时调用的事件句柄 2  3 ondblclick:当用户双击某个对象时调用的事件句柄 4  5 onfocus:元素获得焦点(输入框) 6  7 onblur:元素失去焦点(用于表单验证,用户离开某个输入框时,代表已经输入完了,可以对它进行验证) 8  9 onchange:域的内容被改变(用户表单元素,当元素内容被改变时触发)10 11 onkeydown:某个键盘按键被按下(当用户在最后一个输入框按下回车按键时,表单提交)12 13 onkeypress:某个键盘按键被按下并松开14 15 onkeyup:某个键盘按键被松开16 17 onmousedown:鼠标按钮被按下18 19 onmousemove:鼠标被移动20 21 onmouseout:鼠标从某元素移开22 23 onmouseover:鼠标移到某元素之上24 25 onmouseleave:鼠标从元素离开26 27 onselect:文本被选中28 29 onsubmit:确认按钮被点击
1 第一种: 2      9 10 第二种:11     
两种事件绑定方式
1  2  3  4     
5 Title 6 7 8
9
ddd
10
ddd
11
ddd
12

pppp

13
14 15 24
推荐这种绑定

  Event对象:

  Event对象代表事件的状态,比如事件在其中发生的元素,键盘按键的状态,鼠标的位置,鼠标按钮的状态。事件通常与函数结合使用,函数不会再事件发生前被执行!Event对象在事件发生时系统已经创建好了,并且会在事件函数被调用时传给事件函数,我们仅仅需要接受一下即可。

1  2  3  4     
5 Title 6 18 19 20
21
22 23
24
25 26 35
事件传播

   node的增删改查

1 增: 2 createElement(name) 创建元素 3 appendChild() 将元素添加 4  5  6 删: 7 1.获取待删除的元素 8 2.获取它的父元素 9 3.使用removeChild()方法删除10 11 改:12     第一种:用上面的增和删结果完成修改13     第二种:14                 a.使用setAttribute();修改属性15                 b.使用innerHTML属性修改元素的内容16 17 查:18     a.通过使用 getElementById() 方法 19     b.通过使用 getElementsByTagName() 方法 20     c.通过使用 getElementsByClassName() 方法 21     d.通过使用 getElementsByName() 方法
增、删、改、查
1  2  3  4     
5 Title 6 24 25 26
27
28 hello div129
30
31
32 hello div233
34
35
36

hello div3

37
38
hello div4
39 40 61
练习

  修改HTML DOM

1 改变HTML内容:innerHTML、innerText 2  3 改变CSS样式: 4     

hello world!

; 5 document.getElementById('p1').style.color='blue'; 6 7 改变HTML属性: 8 elementNode.setAttribute(name,value) 9 elementNode.getAttribute(name)10 11 创建新的HTML元素:12 createElement(name)13 14 删除已有的HTML元素:15 elementNode.removeChild(node)16 17 关于class的操作:18 elementNode.className19 elementNode.classList.add20 elementNode.classList.remove
1  2  3  4     
5 Title 6 7 8
9 div110
11 12 20
class小练习
1  2  3  4     
5 Title 6 37 38 39
40
41
42
43 44
45
46
47
48 49 61
模态窗体对话框
1  2  3  4     
5 Title 6 7 8 9 10 11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1111 1111
22 22
333 333
28 29 64
表格checkbox正反选
1  2  3  4     
5 Title 6 7 8 11 14 15 61
JS二级联动

JS练习源码云盘地址 :

链接:https://pan.baidu.com/s/1_Lh3vkLJwC0Ywh2-O52TUA

提取码:am6y

六 、 前端之JQuery

  JQuery是什么?

  JQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多JavaScript高手加入其team。JQuery是继prototype之后又一个优秀的JavaScript框架。其宗旨是--WRITE LESS,DO MORE!它是轻量级的JS库,这是其他的JS库所不及的,兼容CSS3,还兼容各种浏览器。JQuery是一个快速的,简洁的JavaScript库,使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。JQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说的很详细,同时还有许多成熟插件可供选择。

  什么事JQuery对象?

  JQuery对象通过JQuery包装DOM对象后产生的对象。如果一个对象是JQuery对象,那么它就可以使用JQuery里的方法:$("#test").html();

  JQuery的基本语法:$(selector).action()

1     第一种方式: 2 官网地址:http://jquery.com/download/ 3 注: 4     1、Production version -用于实际的网站中,已被精简和压缩 5     2、Development version -用于测试和开发(未压缩,可读的代码) 6  7  8     其他方式(通过CDN引用它): 9 Staticfile:https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js10 百度:https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js11 又拍云:https://upcdn.b0.upaiyun.com/libs/jquery/jquery-2.0.2.min.js12 新浪:https://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js13 Google:https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js
JQuery安装
1  2  3  4     
5 Title 6 7 8
hello
9 10 引入方式一:11
12 引入方式二:13 14 17
JQuery引入方式
1 var $variable -----> JQuery对象(建议定义JQuery变量时,前面加"$")2 var variable------->DOM对象3 4 $variable[0]:JQuery对象转为DOM对象5 6 例子:7     $("#msg").html;    <=====>    $("#msg")[0].innerHTML
JQuery对象转DOM对象

注:JQuery对象方法不能与DOM对象方法混用,必须转换后,才可用

  寻找元素

  选择器:

1     基本选择器: 2 $("*")    $("#id")    $(".class")    $("element")    $(".class,p,div") 3  4  5     层级选择器: 6 $(".outer div")    $(".outer>div")    $(".outer+div")    $(".outer~div") 7  8  9     属性选择器:10 $('[id="div1"]')    $('["alex"="sb"][id]')11 12 13     表单选择器:14 $("[type='txt']")  ------>$(":txt")15 注:只适用于input标签:$("input:checked")
1  2  3  4     
5 Title 6 7 8
hello div
9

hello p

10 点我11
我是span
12

p上

13
outer114
15 inner16

inner p

17
18

alex

19

alexbb

20
21

p下

22
outer2
23

pp下

24
    25
  • 111
  • 26
  • 222
  • 27
  • 333
  • 28
  • 444
  • 29
  • 555
  • 30
  • 666
  • 31
32 33 34 35 36 37 67
选择器练习

  筛选器:

1     基本筛选器: 2 $("li:first")    $("li:eq(2)")    $("li:even")    $("li:gt(1)") 3  4      5     过滤筛选器: 6 $("li").eq(2)    $("li").first    $("ul li").hasclass("test") 7  8  9     查询筛选器:10 $("div").children(".test")    $("div").find(".test")    $(".test").next()    $(".test").nextAll()    $(".test").nextUntil()    $("div").prev()    $("div").preAll()    $("div").preUntil()    $(".test").parent()    $(".test").parents()    $(".test").parentUntil()    $("div").siblings()
1  2  3  4     
5 Title 6 7 8
hello div
9

hello p

10 点我11
我是span
12

p上

13
outer114
15 inner16

inner p

17
18

alex

19

alexbb

20
21

p下

22
outer2
23

pp下

24
    25
  • 111
  • 26
  • 222
  • 27
  • 333
  • 28
  • 444
  • 29
  • 555
  • 30
  • 666
  • 31
32 33 34 35 36 37 61
筛选器练习
1  2  3  4     
5 Title 6 31 32 33
34
62
63 64
65
66 67 68 74
左侧菜单栏-小练习

  操作元素(属性、CSS、文档处理)

属性操作:

1 属性: 2     $("").attr(); 3     $("").removeAttr; 4     $("").prop(); 5     $("").removeProp(); 6  7  8 CSS类: 9     $("").addClass(class|fn);10     $("").removeClass([class|fn]);11 12 13 HTML代码、文本、值:14 $("").css("color","red"); 15 $("").html(val|fn) 16 $("").text(val|fn) 17 $("").val(val|fn|arr)
1  2  3  4     
5 Title 6 7 8
9
是否可见10
是否可见11
12 13
14
15 iiiiii16

pppppp

17
18 19 20 55
小练习
1  2  3  4     
5 Title 6 7 8

pppp

9

oooo

10

iiii

11 12 13 35
JQuery下的遍历
1  2  3  4     
5 Title 6 7 8 9 10 11
12
13
14
15
16
17
18
19
20
21
22
23
24

111

222

333

25 26 27 55
JQuery正反选
1  2  3  4     
5 Title 6 37 38 39
40
41
42
43 44
45
46
47
48 49 50 58
JQuery模态对话框
1  2  3  4     
5 Title 6 7 8
9

pppp

10
11 12 13 14 15
16
17
18
19
20
21 71
文档操作:增、删、改

CSS操作:

1 格式: 2     $("").css(name/pro/[val/fn]) 3  4  5 位置: 6     $("").offset([coordinates])       注:标签距离视口的偏移量 7     $("").position()           注:相对于已经定位的父标签偏移量 8     $("").scrollTop([val]) 9     $("").scrollLeft([val])10 11 12 尺寸:13     $("").height([val/fn])14     $("").width([val/fn])15     $("").innerHeight()16     $("").innerWidth()17     $("").outerHeight([soptions])18     $("").outerWidth([options])
1  2  3  4     
5 Title 6 42 43 44
45
46
47
返回顶部
48
49 50 51 89
CSS小练习及监听滚动条事件

  事件

1 页面载入 2     ready(fn)  //当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。 3     $(document).ready(function(){}) -----------> $(function(){}) 4  5 事件处理 6     $("").on(eve,[selector],[data],fn)  // 在选择元素上绑定一个或多个事件的事件处理函数。 7  8     //  .on的selector参数是筛选出调用.on方法的dom元素的指定子元素,如: 9     //  $('ul').on('click', 'li', function(){console.log('click');})就是筛选出ul下的li给其绑定10     //  click事件;11 12     [selector]参数的好处:13         好处在于.on方法为动态添加的元素也能绑上指定事件;如:14 15         //$('ul li').on('click', function(){console.log('click');})的绑定方式和16         //$('ul li').bind('click', function(){console.log('click');})一样;我通过js给ul添加了一个17         //li:$('ul').append('
  • js new li
  • ');这个新加的li是不会被绑上click事件的18 19 //但是用$('ul').on('click', 'li', function(){console.log('click');}方式绑定,然后动态添加20 //li:$('ul').append('
  • js new li
  • ');这个新生成的li被绑上了click事件21 22 [data]参数的调用:23 function myHandler(event) {24 alert(event.data.foo);25 }26 $("li").on("click", {foo: "bar"}, myHandler)
  •   动画效果

    1  2  3  4     
    5 Title 6 7 8
    9
    10
    11
    12
    13 14
    15
    16
    17
    18
    19
    20
    21 22
    23
    24
    25
    26
    27
    28 29
    30
    31
    32 33 34 35 88
    6个方法及示例

      扩展方法

    1  2  3  4     
    5 Title 6 7 8

    pppp

    9

    oooooooooo

    10 11 12 57
    View Code

     

    上一篇:JQuery 图片轮播,详细注释说明,让你一看就会!
    下一篇:Python 之网络式编程

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2025年04月12日 05时14分54秒