0%

Java 企业开发基础 JavaWeb

JavaScript

JavaScript介绍

JS是弱类型,Java是强类型

特点

  • 交互性(它可以做的就是信息的动态交互)
  • 安全性(不允许直接访问本地硬盘)
  • 跨平台性(只要是可以解释 JS 的浏览器都可以执行,和平台无关)

JS和html代码的结合方式

第一种方式

只需要在head标签中,或者在body标签中,使用script标签来书写JS代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Title</title>
<script type="text/javascript">
// alert是JS语言提供的一个警告函数,可以接收任何参数
alert("Hello Word!!");
</script>
</head>
<body>

</body>
</html>

第二种方式

使用script标签中的src属性引入单独的JavaScript代码文件

1
2
// a.js
alert("Hello World!!!");
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Title</title>
<!-- 使用script标签引入外部js文件 -->
<script type="text/javascript" src="a.js"> </script>
</head>
<body>

</body>
</html>

一个script标签可以用来定义js代码,也可以用来引入js文件,两个功能二选一使用。不能同时使用。但是可以写多个script代码。

JS变量

JS的变量类型

  • 数值类型:number,包含了Java的多有数值有关的类型
  • 字符串类型:string
  • 对象类型:Object
  • 布尔类型:boolean
  • 函数类型:function

JS里特殊的值

  • undefined 未定义,所有js变量未赋予初始值的时候,默认值都是undefined
  • null 空值
  • NaN 全称是:Not a Number。非数字,非数值。数值类型*字符串类型就会出现

JS中定义变量的格式

1
2
var 变量名;
var 变量名 = 值;

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var i;
// alert(i); // undefined
i = 12;
// typeof()是JavaScript语言提供的一个函数。
alert( typeof(i) ); // number

i = "abc";
// 它可以取变量的数据类型返回
alert( typeof(i) ); // String

var a = 12;
var b = "abc";

alert( a * b ); // NaN是非数字,非数值。
</script>
</head>
<body>

</body>
</html>

关系(比较)运算

  • 等于:== 等于是简单的做字面值比较
  • 全等于:=== 除了做字面的比较之外,还会比较两个变量的数据类型。
1
2
3
4
5
var a = "12";
var b = 12;

alert( a == b ); // true
alert( a === b ); // false

逻辑运算

  • 且运算:&&
  • 或运算:||
  • 取反运算:!

在JS语言中,所有的变量,都可以作为一个boolean类型的变量去使用

0/null/undefined/""都认为是false

数组

JS中数组的定义方式:

  • var 数组名 = []; 空数组
  • var 数组名 = [1, 'abc', true] 定义数组时赋值元素。

注意

  • JS语言中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动的给数组做扩容操作。
  • JS中的数组中元素类型可以不同。
1
2
3
4
5
6
7
var arr = [];
arr[9] = 10;
alert(arr.length); //10,其他元素为默认值undefined

for (var i = 0; i < arr.length; i++) {
alert(arr[i]);
}

函数

函数的定义方式

  • 第一种:可以使用function关键字来定义函数
1
2
3
function 函数名(形参列表) {
函数体;
}

在JS中不需要可以规定函数的返回类型,只需要直接在函数体内使用return语句返回值即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function fun1(a, b) {
alert("111");
}

fun1(1, "ab");

function fun2(a, b) {
alert("222");
return a + b
}

alert(fun2(1, 2));

var fun3 = function(a, b) {
alert("3");
}
fun3(1, "ab");
  • 第二种函数定义方式
1
2
3
var 函数名 = function(形参列表) {
函数体
}

注意:在Java中函数允许重载,但是在JS中函数的重载会直接覆盖掉上一次的定义。

函数的arguments隐形参数

只在function函数内。就是在function函数中不需要定义,但却可以直接用来获取所有参数的变量。叫隐形参数。

比较像java基础的可变长参数一样。可变长参数其实是一个数组。

那么 js 中的隐形参数也跟 java 的可变长参数一样。操作类似数组。

1
2
3
4
5
6
7
8
9
10
11
12
// 需求:要求 编写 一个函数。用于计算所有参数相加的和并返回
function sum(num1, num2) {
var result = 0;
for (var i = 0; i < arguments.length; i++) { // arguments.length实际传入参数的长度
if (typeof(arguments[i]) == "number") { // 当前参数类型为number
result += arguments[i];
}
}
return result;
}

alert( sum(1,2,3,4,"abc",5,6,7,8,9) );

JS中的自定义对象

Object形式的自定义对象

定义格式

1
2
3
4
5
6
var 变量名 = new Object();	// 创建一个对象,空对象
变量名.属性名 = 值; // 定义一个属性
变量名.属性名 = function(){}; // 定义一个属性函数名:function(){}

// 对象的访问
变量名.属性/函数名();

示例代码

1
2
3
4
5
6
7
8
9
10
var obj = new Object(); 
obj.name = "华仔";
obj.age = 18;
obj.fun = function () {
alert("姓名:" + this.name + " , 年龄:" + this.age);
}
// 对象的访问:
// 变量名.属性 / 函数名();
alert( obj.age );
obj.fun();

{}形式的自定义对象

定义格式

1
2
3
4
5
6
7
8
var 变量名 = {	// 空对象
属性名:值, // 定义一个属性
属性名:值, // 定义一个属性
函数名:function(){} // 定义一个函数
};

// 对象的访问
对象名.属性/函数名();

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
var obj = {
name:"国哥",
age:18,
fun : function () {
alert("姓名:" + this.name + " , 年龄:" + this.age);
}
};

// 对象的访问:
// 变量名.属性 / 函数名();
alert(obj.name);
obj.fun();

JS中的事件

是电脑输入设备和页面进行交互的响应,我们称之为事件。

常用的事件

  • onload 加载完成事件:页面加载完成之后,常用于做页面 js 代码初始化操作
  • onclick 单击事件:常用于按钮的点击响应操作。
  • onblur 失去焦点事件:常用用于输入框失去焦点后验证其输入内容是否合法。
  • onchange 内容发生改变事件:常用于下拉列表和输入框内容发生改变后操作
  • onsubmit 表单提交事件: 常用于表单提交前,验证所有表单项是否合法。

注册(绑定)事件

事件的注册其实就是告诉浏览器,当事件响应后要执行哪些操作代码,叫事件注册或事件绑定。

  • 静态注册事件

通过 html 标签的事件属性直接赋于事件响应后的代码,这种方式我们叫静态注册。

  • 动态注册事件

是指先通过 js 代码得到标签的 dom 对象,然后再通过 dom 对象.事件名 = function(){} 这种形式赋于事件响应后的代码,叫动态注册。

动态注册的基本步骤:

  1. 获取标签对象
  2. 标签对象.时间名 = function(){}

onload加载完成事件

onload事件是浏览器解析完页面之后就会自动触发的事件

1
2
3
4
// onload事件动态注册。是固定写法
window.onload = function () {
alert("动态注册的onload事件");
}

onclick单击事件

onclick单击事件常用于按钮

示例代码

1
2
3
4
5
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
36
37
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onclickFun() {
alert("静态注册onclick事件");
}

// 动态注册onclick事件
window.onload = function () {
// 1 获取标签对象
/*
* document 是JavaScript语言提供的一个对象(文档)<br/>
* get 获取
* Element 元素(就是标签)
* By 通过。。 由。。经。。。
* Id id属性
*
* getElementById通过id属性获取标签对象
**/
var btnObj = document.getElementById("btn01");
// alert( btnObj );
// 2 通过标签对象.事件名 = function(){}
btnObj.onclick = function () {
alert("动态注册的onclick事件");
}
}
</script>
</head>
<body>
<!-- 静态注册onClick事件 -->
<button onclick="onclickFun();">按钮1</button>
<button id="btn01">按钮2</button>
</body>
</html>

onblur失去焦点事件

onblur失去焦点事件常用于输入框。

示例代码

1
2
3
4
5
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// 静态注册失去焦点事件
function onblurFun() {
// console是控制台对象,是由JavaScript语言提供,专门用来向浏览器的控制器打印输出, 用于测试使用
// log() 是打印的方法
console.log("静态注册失去焦点事件");
}

// 动态注册 onblur事件
window.onload = function () {
//1 获取标签对象
var passwordObj = document.getElementById("password");
// alert(passwordObj);
//2 通过标签对象.事件名 = function(){};
passwordObj.onblur = function () {
console.log("动态注册失去焦点事件");
}
}

</script>
</head>
<body>
<!-- 静态注册onblur事件 -->
用户名:<input type="text" onblur="onblurFun();"><br/>
密码:<input id="password" type="password" ><br/>
</body>
</html>

onchange内容发生改变事件

onchange内容发生改变事件 通常用于下拉列表中。

示例代码

1
2
3
4
5
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
36
37
38
39
40
41
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>

<script type="text/javascript">
function onchangeFun() {
alert("女神已经改变了");
}

window.onload = function () {
//1 获取标签对象
var selObj = document.getElementById("sel01");
// alert( selObj );
//2 通过标签对象.事件名 = function(){}
selObj.onchange = function () {
alert("男神已经改变了");
}
}
</script>
</head>
<body>
请选择你心中的女神:
<!--静态注册onchange事件-->
<select onchange="onchangeFun();">
<option>--女神--</option>
<option>芳芳</option>
<option>佳佳</option>
<option>娘娘</option>
</select>

请选择你心中的男神:
<select id="sel01">
<option>--男神--</option>
<option>国哥</option>
<option>华仔</option>
<option>富城</option>
</select>
</body>
</html>

onsubmit表单提交事件

onsubmit表单提交事件 是为了在提交时验证表单中的内容是否合法

示例代码

1
2
3
4
5
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
36
37
38
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" >
// 静态注册表单提交事务
function onsubmitFun(){
// 要验证所有表单项是否合法,如果,有一个不合法就阻止表单提交
alert("静态注册表单提交事件----发现不合法");

return false; // 阻止表单提交
}

window.onload = function () {
//1 获取标签对象
var formObj = document.getElementById("form01");
//2 通过标签对象.事件名 = function(){}
formObj.onsubmit = function () {
// 要验证所有表单项是否合法,如果,有一个不合法就阻止表单提交
alert("动态注册表单提交事件----发现不合法");

return false;
}
}

</script>
</head>
<body>
<!--return false 可以阻止 表单提交 -->
<form action="http://localhost:8080" method="get" onsubmit="return onsubmitFun();">
<input type="submit" value="静态注册"/>
</form>
<form action="http://localhost:8080" id="form01">
<input type="submit" value="动态注册"/>
</form>
</body>
</html>

DOM模型

DOM 全称是 Document Object Model 文档对象模型

大白话,就是把文档中的标签,属性,文本,转换成为对象来管理。

Document对象

image-20220925160851563

Document 对象的理解

  • Document 它管理了所有的 HTML 文档内容。
  • document 它是一种树结构的文档。有层级关系。
  • 它让我们把所有的标签都对象化。
  • 我们可以通过 document 访问所有的标签对象。

Document对象中的方法

  • document.getElementById(elementId)通过标签的 id 属性查找标签 dom 对象,elementId 是标签的 id 属性值
  • document.getElementsByName(elementName) 通过标签的 name 属性查找标签 dom 对象,elementName 标签的 name 属性值
  • document.getElementsByTagName(tagname) 通过标签名查找标签 dom 对象。tagname 是标签名
  • document.createElement( tagName) 通过给定的标签名,创建一个标签对象。tagName 是要创建的标签名

    注意document 对象的三个查询方法,如果有 id 属性,优先使用 getElementById 方法来进行查询如果没有 id 属性,则优先使用 getElementsByName 方法来进行查询如果id属性和name属性都没有最后再按标签名查 getElementsByTagName

节点的常用属性和方法

节点就是标签对象

方法

  • getElementsByTagName()获取当前节点的指定标签名孩子节点
  • appendChild(oChildNode) 可以添加一个子节点,oChildNode是要添加的孩子节点。

属性

  • childNodes属性,获取当前节点的所有子节点
  • firstChild属性,获取当前节点的第一个子节点
  • lastChild属性,获取当前节点的最后一个子节点
  • parentNode属性,获取当前节点的父节点
  • nextSibling属性,获取当前节点的下一个节点
  • previousSibling属性,获取当前节点的上一个节点
  • className用于获取或设置标签的 class 属性值
  • innerHTML属性,表示获取/设置起始标签和结束标签中的内容
  • innerText属性,表示获取/设置起始标签和结束标签中的文本

正则表达式

1
2
3
4
5
6
var 变量名 = new RegExp("字符串");

var 变量名 = /字符串/;

/[]/; // 或
/[a-z]/ // 任意a~z

示例代码

1
2
3
4
5
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
36
37
38
39
40
41
42
// 表示要求字符串中,是否包含字母e
var patt = new RegExp("e");
var patt = /e/; // 也是正则表达式对象
// 表示要求字符串中,是否包含字母a或b或c
var patt = /[abc]/;
// 表示要求字符串,是否包含小写字母
var patt = /[a-z]/;
// 表示要求字符串,是否包含任意大写字母
var patt = /[A-Z]/;
// 表示要求字符串,是否包含任意数字
var patt = /[0-9]/;

// 表示要求字符串,是否包含字母,数字,下划线
var patt = /\w/;

// 表示要求 字符串中是否包含至少一个a
var patt = /a+/;

// 表示要求 字符串中是否 *包含* 零个 或 多个a
var patt = /a*/;
// 表示要求 字符串是否包含一个或零个a
var patt = /a?/;
// 表示要求 字符串是否包含连续三个a
var patt = /a{3}/;
// 表示要求 字符串是否包 至少3个连续的a,最多5个连续的a
var patt = /a{3,5}/;
// 表示要求 字符串是否包 至少3个连续的a,
var patt = /a{3,}/;
// 表示要求 字符串必须以a结尾
var patt = /a$/;
// 表示要求 字符串必须以a打头
var patt = /^a/;

// 要求字符串中是否*包含* 至少3个连续的a
var patt = /a{3,5}/;
// 要求字符串,从头到尾都必须完全匹配
var patt = /^a{3,5}$/;
var patt = /^\w{5,12}$/;

var str = "wzg168[[[";

alert( patt.test(str) );

jQuery

jQuery介绍

jQuery是JavaScript和查询(Query),他是辅助JavaScript开发的js类库。

核心思想 :它的核心思想是 write less,do more(写得更少,做得更多),所以它实现了很多浏览器的兼容问题。

优点:jQuery 是免费、开源的,jQuery 的语法设计可以使开发更加便捷,例如操作文档对象、选择 DOM 元素、制作动画效果、事件处理、使用 Ajax 以及其他功能

注意:使用jQuery一定要引用jQuery库。

示例代码:使用jQuery给一个按钮绑定单击事件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>

<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">

//使用$()代替window.onload
$(function(){
//使用选择器获取按钮对象,随后绑定单击响应函数
$("#btnId").click(function(){
//弹出Hello
alert('Hello');
});
});

</script>


</head>
<body>
<button id="btnId">SayHello</button>
</body>
</html>

jQuery核心函数

这个函数

  • 传入参数为【函数】时。表示页面加载完成之后,相当于window.onload = function(){}
  • 传入参数为【HTML字符串】时。会对我们创建这个 html 标签对象
  • 传入参数为【选择器字符串】时:
    • $("#id属性值") id选择器,根据id查询标签对象
    • $(".class属性值") class选择器,根据class属性查询标签对象
    • $("标签名") 标签名选择器,根据标签名查询标签对象
  • 传入参数为【DOM 对象】时:会把这个dom对象转换为jQuery对象

jQuery对象和DOM对象的区别

DOM对象

  • 通过 getElementById()查询出来的标签对象是 Dom 对象
  • 通过 getElementsByName()查询出来的标签对象是 Dom 对象
  • 通过 getElementsByTagName()查询出来的标签对象是 Dom 对象
  • 通过 createElement() 方法创建的对象,是 Dom 对象

DOM对象Alert出来的效果是:[object HTML 标签名Element]

jQuery对象

  • 通过 JQuery 提供的 API 创建的对象,是 JQuery 对象
  • 通过 JQuery 包装的 Dom 对象,也是 JQuery 对象
  • 通过 JQuery 提供的 API 查询到的对象,是 JQuery 对象

jQuery对象Alert出来的效果是:[object Object]

jQuery对象的本质

jQuery对象是 dom对象的数组 + jQuery 提供的一系列功能函数。

jQuery对象和DOM对象的使用区别

  • jQuery 对象不能使用 DOM 对象的属性和方法
  • DOM 对象也不能使用 jQuery 对象的属性和方法

jQuery对象和DOM对象互转⭐

DOM对象转为 jQuery 对象

  • 现有DOM对象
  • $(DOM对象)就可以转换成 jQuery对象

jQuery 对象转为 DOM对象

  • 先有 jQuery对象
  • jQuery对象[下标]取出相应的DOM对象。

image-20220925211944707

jQuery选择器⭐⭐⭐

基本选择器

  • #id 根据id查找标签对象
  • .class 根据class查找标签对象
  • element 根据标签名查找标签对象
  • * 表示任意的,所有选择器
  • selector1,selector2组合选择器:合并选择器1,选择器2的结果并返回

示例代码

1
2
3
4
5
$("#one").css("background-color","#bbffaa"); // css() 方法 可以设置和获取样式
$(".mini").css("background-color","#bbffaa"); //2.选择 class 为 mini 的所有元素
$("div").css("background-color","#bbffaa"); //3.选择 元素名是 div 的所有元素
$("*").css("background-color","#bbffaa"); //4.选择所有的元素
$("span,#two").css("background-color","#bbffaa"); //5.选择所有的 span 元素和id为two的元素

层级选择器

  • ancestor descendant后代选择器:在给定的祖先元素下匹配所有的后代元素
  • parent > child子元素选择器:在给定的父元素下匹配所有的子元素
  • prev + next相邻元素选择器:匹配所有紧接在 prev 元素后的 next 元素
  • prev ~ sibings之后的兄弟元素选择器:匹配 prev 元素之后的所有 siblings 元素

示例代码

1
2
3
4
5
6
7
8
// 1.选择 body 内的所有 div 元素
$("body div").css("background", "#bbffaa");
// 2.在 body 内, 选择div子元素
$("body > div").css("background", "#bbffaa");
// 3.选择 id 为 one 的下一个 div 元素
$("#one + div").css("background", "#bbffaa");
// 4.选择 id 为 two 的元素后面的所有 div 兄弟元素
$("#two ~ div").css("background", "#bbffaa");

过滤选择器

基本过滤

  • :first 获取第一个元素
  • :last 获取最后一个元素
  • :not(selector) 去除所有与给定选择器匹配的元素
  • :even 匹配所有索引值为偶数的元素,从 0 开始计数
  • :odd 匹配所有索引值为奇数的元素,从 0 开始计数
  • :eq(index) 匹配一个给定索引值的元素
  • :gt(index) 匹配所有大于给定索引值的元素
  • :lt(index) 匹配所有小于给定索引值的元素
  • :header 匹配如 h1, h2, h3 之类的标题元素
  • :animated 匹配所有正在执行动画效果的元素
1
2
//11.选择没有执行动画的最后一个div
$("div:not(:animated):last").css("background", "#bbffaa");

内容过滤器

  • :contains(text) 匹配包含给定文本的元素
  • :empty 匹配所有不包含子元素或者文本的空元素
  • :parent 匹配含有子元素或者文本的元素
  • has(selector) 匹配含有选择器所匹配的元素的元素

属性过滤器

  • [attribute] :匹配包含给定属性的元素
  • [attribute=value] :匹配给定的属性是某个特定值的元素
  • [attribute!=value]:匹配所有不含有指定的属性,或者属性不等于特定值的元素。
  • [attribute^=value]:匹配给定的属性是以某些值开始的元素
  • [attribute$=value]:匹配给定的属性是以某些值结尾的元素
  • [attribute*=value]:匹配给定的属性是以包含某些值的元素
  • [attrSel1][attrSel2][attrSelN]:复合属性选择器,需要同时满足多个条件时使用。]

示例代码

1
2
3
4
5
6
7
8
// 选取 属性title值等于'test'的div元素
$("div[title='test']").css("background", "#bbffaa");

// 首先选取有属性id的div元素,然后在结果中 选取属性title值 含有'es'的 div 元素
$("div[id][title*='es']").css("background", "#bbffaa");

// 选取 含有 title 属性值, 且title 属性值不等于 test 的 div 元素
$("div[title][title!='test']").css("background", "#bbffaa");

表单过滤器

  • :input:匹配所有 input, textarea, select 和 button 元素
  • :text:匹配所有 文本输入框
  • :password:匹配所有的密码输入框
  • :radio:匹配所有的单选框
  • :checkbox:匹配所有的复选框
  • :submit:匹配所有提交按钮
  • :image:匹配所有 img 标签
  • :reset:匹配所有重置按钮
  • :button: 匹配所有 input type=button
  • :file: 匹配所有 input type=file 文件上传
  • :hidden:匹配所有不可见元素 display:none 或 input type=hidden

表单对象属性过滤器

  • :enabled:匹配所有可用元素
  • :disabled:匹配所有不可用元素
  • :checked:匹配所有选中的单选,复选,和下拉列表中选中的option标签对象
  • :selected:匹配所有选中的option

jQuery元素筛选

  • eq(index)获取给定索引的元素,和:eq(index)效果相同
  • first()获取第一个元素,和:first效果相同
  • last()获取最后一个元素
  • filter(exp)留下匹配的元素
  • is(exp) 判断是否匹配给定的选择器,只要有一个匹配就返回true
  • has(exp)返回包含有匹配选择器的元素的元素,功能跟 :has 一样
  • not(exp)删除匹配选择器的元素,功能跟 :not 一样
  • children(exp) 返回匹配给定选择器的子元素,功能跟 parent>child 一样
  • find(exp) 返回匹配给定选择器的后代元素,功能跟 ancestor descendant 一样
  • next()返回当前元素的下一个兄弟元素,功能跟 prev + next 功能一样
  • nextAll()返回当前元素后面所有的兄弟元素,功能跟 prev ~ siblings 功能一样
  • nextUntil()返回当前元素到指定匹配的元素为止的后面元素
  • parent() 返回父元素
  • prev(exp)返回当前元素的上一个兄弟元素
  • prevAll()返回当前元素前面所有的兄弟元素
  • prevUnit(exp) 返回当前元素到指定匹配的元素为止的前面元素
  • siblings(exp) 返回所有兄弟元素
  • add()把 add 匹配的选择器的元素添加到当前 jquery 对象中

示例代码

1
2
3
4
5
6
7
8
9
$("div").eq(3).css("background-color","#bfa");
$("div:eq(3)").css("background-color","#bfa"); // 两种写法效果完全一样

//filter()在div中选择索引为偶数的
$("div").filter(":even").css("background-color","#bfa");
//siblings() 找到所有的兄弟元素,包括前面的和后面的
$("#two").siblings().css("background-color","#bfa")
// $("span,#two,.mini,#one")
$("span").add("#two").add(".mini").add("#one").css("background-color","#bfa");

jQuery的属性操作

  • html() 它可以设置和获取起始标签和结束标签中的内容。和dom属性中的innerHtml一样
  • text()他可以设置和获取起始标签和结束标签中的文本。和dom属性中的innerText一样
  • val()它可以设置和获取 表单项 的value属性值。和dom属性value一样

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 不传参数,是获取,传递参数是设置
alert( $("div").html() );// 获取
$("div").html("<h1>我是div中的标题 1</h1>");// 设置

// 不传参数,是获取,传递参数是设置
alert( $("div").text() ); // 获取
$("div").text("<h1>我是div中的标题 1</h1>"); // 设置

// 不传参数,是获取,传递参数是设置
$("button").click(function () {
alert($("#username").val());//获取
$("#username").val("超级程序猿");// 设置
});

// 批量操作单选
$(":radio").val(["radio2"]);
// 批量操作筛选框的选中状态
$(":checkbox").val(["checkbox3","checkbox2"]);
// 批量操作多选的下拉框选中状态
$("#multiple").val(["mul2","mul3","mul4"]);
// 操作单选的下拉框选中状态
$("#single").val(["sin2"]);
  • attr()可以设置和获取属性的值,不推荐操作checkedreadOnlyselecteddisable等等。attr()方法还可以操作飞标准的属性。比如自定义属性:
  • prop()可以设置和获取属性的值,只推荐操作:checkedreadOnlyselecteddisable
1
2
3
4
5
6
7
8
9
10
alert( $(":checkbox:first").attr("name") ); // 获取name属性的值
$(":checkbox:first").attr("name","abc") ; // 设置name属性的值

$(":checkbox").prop("checked",false );// 官方觉得返回undefined是一个错误

// 遍历方法
$(":checkbox[name='items']").each(function () {
// 在each遍历的function函数中,有一个this对象。这个this对象是当前正在遍历到的dom对象
this.checked = !this.checked;
});

DOM的增删改

内部插入

  • appendTo()a.appendTo(b)把a插入到b子元素的末尾,成为最后一个元素。
  • prependTo()a.prependTo(b)把a插入到b所有子元素的前面,成为第一个元素。

外部插入

  • insertAfter()a.insertAfter(b)得到ba
  • insertBefore()a.insertBefore(b)得到ab

替换

  • replaceWith()a.replaceWith(b),用b替换掉a
  • replaceAll()a.replaceAll(b),用a替换掉所有的b

删除

  • remove()a.remove()删除a标签
  • empty()a.empty()清空a标签的所有内容。

CSS样式操作

  • addClass(class属性) 通过添加class属性来添加样式
  • removeClass(class属性)通过删除class属性来删除样式
  • toggleClass(class属性)对被选择的class属性进行添加/删除类的切换操作
  • offset()返回第一个匹配元素相对于文档的位置
  • offset({top:值, left:值})设置相对于文档的位置

jQuery动画

基本动画

  • show(),将隐藏的元素可见。
  • hide(),将可见的元素隐藏
  • toggle(),可见的隐藏,隐藏的可见

以上的三个方法都可以添加参数:

  1. 第一个参数:动画执行的时长,以毫秒为单位
  2. 第二个参数:动画的回调函数,动画完成后自动调用的函数。

淡入淡出动画

  • fadeIn(time)在指定时间内淡入(慢慢可见)
  • fadeOut(time)在指定时间内淡出(慢慢消失)
  • fadeTo([time], [0.5], [function]) 在指定时长内慢慢的将透明度修改到指定的值。0透明,1完全可见,0.5半透明
  • fadeToggle(time, function) 淡入/淡出切换

jQuery事件和JS事件的区别

$(function(){})window.onload = function(){}的区别

触发的时间

  • jQuery 的页面加载完成之后是浏览器的内核解析完页面的标签创建好 DOM 对象之后就会马上执行
  • 原生 js 的页面加载完成之后,除了要等浏览器内核解析完标签创建好 DOM 对象,还要等标签显示时需要的内容加载完成

触发的顺序

  • jQuery 页面加载完成之后先执行
  • 原生 js 的页面加载完成之后

执行的次数

  • 原生 js 的页面加载完成之后,只会执行最后一次的赋值函数,会将前面的函数覆盖掉。
  • jQuery 的页面加载完成之后是全部把注册的 function 函数,依次顺序全部执行。

jQuery中其他事件的处理方法

  • click([function]) 它可以绑定单击事件,以及触发单击事件
  • mouseover() 鼠标移入事件
  • mouseout() 鼠标移出事件
  • bind() 可以给元素一次性绑定一个或多个事件。
  • one() 使用上跟 bind 一样。但是 one 方法绑定的事件只会响应一次。
  • unbind() 跟 bind 方法相反的操作,解除事件的绑定
  • live() 也是用来绑定事件。它可以用来绑定选择器匹配的所有元素的事件。哪怕这个元素是后面动态创建出 来的也有
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 使用live绑定的单击事件
$("h5").live("click",function () {
alert('h5单击事件 == live方法绑定');
});
$("button").click(function () {
$("h5").click(); // 不传function是触发事件
});

//鼠标移入
$("h5").mouseover(function () {
console.log("你进来了")
});
// //鼠标移出
$("h5").mouseout(function () {
console.log("你出去了")
});

事件的冒泡

事件的冒泡是指,父子元素同时监听同一个事件。当触发子元素的事件的时候,同一个事件也被传递到了父元素的事件里去 响应

阻止事件冒泡的方法:在子元素事件函数体内,return false; 可以阻止事件的冒泡传递

1
2
3
4
5
6
7
8
9
10
11
12
13
$(function(){
$("#content").click(function () { // div为父元素
alert('我是div');
});

$("span").click(function () { // span为子元素
alert('我是span');

return false;
});


})

JS事件对象

事件对象,是封装有触发的事件信息的一个 javascript 对象。

我们重点关心的是怎么拿到这个 javascript 的事件对象。以及使用。

获取 javascript 事件对象

  • 在给元素绑定事件的时候,在事件的 function( event ) 参数列表中添加一个参数,这个参数名,我们习惯取名为 event。 这个 event 就是
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//1.原生javascript获取 事件对象
window.onload = function () {
document.getElementById("areaDiv").onclick = function (event) {
console.log(event);
}
}
//2.JQuery代码获取 事件对象
$(function () {
// $("#areaDiv").click(function (event) {
// console.log(event);
// });
//3.使用bind同时对多个事件绑定同一个函数。怎么获取当前操作是什么事件。

$("#areaDiv").bind("mouseover mouseout",function (event) {
if (event.type == "mouseover") {
console.log("鼠标移入");
} else if (event.type == "mouseout") {
console.log("鼠标移出");
}
});
});

XML

xml是可扩展的标记性语言

作用

  • 用来保存数据,而且这些数据具有自我描述性
  • 可以作为项目或者模块的配置文件
  • 还可以作为网络传输数据的格式。(不多用了,主要以JSON为主)
1
2
3
4
5
6
<students>
<student>
<id>1</id>
<name>xzt</name>
</student>
</students>

XML语法

文档声明

属性

  • version版本号
  • encoding编码格式
  • standalone="yes/no"表示该xml文件是否是独立的xml

注意

  • <?xml 需要连在一起写。否则会报错

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!-- version:xml版本; encoding:xml编码 -->
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<id>1</id>
<name>aaa</name>
<sex></sex>
</student>
<student>
<id>2</id>
<name>bbb</name>
<sex></sex>
</student>
</students>

XML元素(标签)

xml元素是指从(且包括)开始标签直到(且包括)结束标签的部分

元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。

元素也分为单标签和双标签

  • 单标签:<元素名 属性="值"/>
  • 双标签:<元素名 属性="值"> </元素名>

命名规则

  • 名称可以包含字母、数字以及其他字符。
  • 名称不能以数字或者标点符号开始
  • 名称不能包含空格

XML属性

xml 的标签属性和 html 的标签属性是非常类似的,属性可以提供元素的额外信息 。

在标签上可以书写属性: 一个标签上可以书写多个属性。每个属性的值必须使用 引号 引起来。属性 的规则和标签的书写规则一致。

注意:属性必须用""引起来

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="1" name="aaa" sex="男">
</student>
<student>
<id>2</id>
<name>bbb</name>
<sex></sex>
</student>
</students>

语法规则

  • xml中所有的元素都必须有关闭标签
  • xml对大小写敏感
  • xml标签必须正确的嵌套
  • xml文档必须有根元素,没有父标签的顶级元素
  • xml的属性须加引号
  • xml中的特殊字符。例如>需要写为&gt;<需要写为&lt;

文本区域(CDATA区)

CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析

CDATA格式

<![CDATA[这里可以把你输入的字符原样显示,不会解析xml]]>

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<id>2</id>
<name>
<![CDATA[aaa<<<>>>aaa>>><<<!!!!]]>
</name>
<sex></sex>
</student>
</students>

XML解析

xml 可扩展的标记语言。 不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术来

第三方的解析:

  • jdom 在 dom 基础上进行了封装 。
  • dom4j 又对 jdom 进行了封装。
  • pull 主要用在 Android 手机开发,是在跟 sax 非常类似都是事件机制解析 xml 文件。

这个 Dom4j 它是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析 xml

dom4j解析⭐⭐⭐

由于 dom4j 它不是 sun 公司的技术,而属于第三方公司的技术,我们需要使用 dom4j 就需要到 dom4j 官网下载 dom4j 的 jar 包。

dom4j编程步骤

  • 第一步: 先加载 xml 文件创建 Document 对象
  • 第二步:通过 Document 对象拿到根元素对象
  • 第三步:通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象
  • 第四步:找到你想要修改、删除的子元素,进行相应在的操作
  • 第五步,保存到硬盘上

获取 document 对象

首先需要创建一个lib目录,并添加dom4j的jar包。并添加到类路径。

步骤

  1. 读取 xml 文件SAXReader saxReader = new SAXReader(); Document document = saxReader.read("xml文件位置");
  2. 通过document对象获取根元素 Element rootElement = document.getRootElement();
  3. 通过根元素获取xml里的标签对象 List<Element> books = rootElement.elements();
  4. 遍历,处理每个xml里的标签转化为对应的类
    • elementText() 直接获取指定标签名的文本内容

示例代码

需要解析的xml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book sn="SN12341232">
<name>辟邪剑谱</name>
<price>9.9</price>
<author>班主任</author>
</book>
<book sn="SN12341231">
<name>葵花宝典</name>
<price>99.99</price>
<author>班长</author>
</book>
</books>

与xml文件相对应的Book类

1
2
3
4
5
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package com.atguigu.pojo;

import java.math.BigDecimal;

public class Book {
private String sn;
private String name;
private BigDecimal price;
private String author;

public Book(String sn, String name, BigDecimal price, String author) {
this.sn = sn;
this.name = name;
this.price = price;
this.author = author;
}

public Book() {
}

public String getSn() {
return sn;
}

public void setSn(String sn) {
this.sn = sn;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public BigDecimal getPrice() {
return price;
}

public void setPrice(BigDecimal price) {
this.price = price;
}

public String getAuthor() {
return author;
}

public void setAuthor(String author) {
this.author = author;
}

@Override
public String toString() {
return "Book{" +
"sn='" + sn + '\'' +
", name='" + name + '\'' +
", price=" + price +
", author='" + author + '\'' +
'}';
}
}

dom4j解析类

1
2
3
4
5
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
36
37
38
39
40
41
42
43
package com.atguigu.pojo;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import java.util.List;

public class Dom4jTest {
@Test
public void test1() throws Exception, NullPointerException {
// 创建一个SaxReader输入流,去读取 xml配置文件,生成Document对象
// 1.读取bools.xml文件
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("src/books.xml");
// 2.通过document对象获取根元素
Element rootElement = document.getRootElement();
// 3.通过根元素获取book标签对象
List<Element> books = rootElement.elements();
// 4.遍历,处理每个book标签转化为Book类
for (Element book : books) {
// asXML() 把标签对象转换为标签字符串
Element nameElement = book.element("name");
// getText()可以获取文本中的标签内容
String nameText = nameElement.getText();

// elementText() 直接获取指定标签名的文本内容
String price = nameElement.elementText("price");
String author = nameElement.elementText("author");

// attributeValue() 获取指定属性名的值
String sn = book.attributeValue("sn");

Book book1 = new Book(sn, nameText, Double.parseDouble(price), author);
System.out.println(book1);

}

}

}

Tomcat

JavaWeb 是指,所有通过 Java 语言编写可以通过浏览器访问的程序的总称,叫 JavaWeb。

JavaWeb 是基于请求和响应来开发的。

请求:请求是指客户端(浏览器)给服务器(Tomcat)发送数据,叫请求 Request

响应:响应是指服务器给客户端回传数据,叫响应 Response

请求和响应是成对出现的,有请求就有响应

端口号:8080。https://localhost:8080

常用的Web服务器

web资源按实现的技术和呈现的效果不同,分为静态资源和动态资源

  • 静态资源:html、css、js、txt、MP4视频、jpg图片
  • 动态资源:jsp页面、Servlet程序。

相关配置参考

Servlet

Servlet是JavaEE规范之一

正在加载今日诗词....