JavaWeb学习笔记(1)-B站尚硅谷

文章目录

一、HTML

001-引课

002-B/S软件的结构

在这里插入图片描述

003-前端的开发流程

在这里插入图片描述

004-网页的组成部分

页面由三部分内容组成!
分别是内容(结构)、表现、行为。

内容(结构),是我们在页面中可以看到的数据。我们称之为内容。一般内容 我们使用html 技术来展示。

表现,指的是这些内容在页面上的展示形式。比如说。布局,颜色,大小等等。一般使用CSS 技术实现。

行为,指的是页面中元素与输入设备交互的响应。一般使用javascript 技术实现。

005-HTML简介

Hyper Text Markup Language  (超文本标记语言)	简写:HTML
HTML 通过标签来标记要显示的网页中的各个部分。网页文件本身是一种文本文件。
通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)

006-创建HTML文件

1、创建一个 web 工程(静态的 web 工程)
	2020新版IDEA中使用 javaScript 代替了 static web
2、在工程下创建 html 页面
3、选择浏览器执行页面
	第一个 html 示例:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>标题</title>
</head>
<body>
	hello
</body>
</html>
注:Java 文件是需要先编译,再由 java 虚拟机跑起来。但 HTML 文件它不需要编译,直接由浏览器进行解析执行。

<html lang="en">
向搜索引擎表示该页面是html语言,并且语言为英文网站,其"lang"的意思就是“language”,而“en”即表示english。
这个主要是给搜索引擎看的,搜索引擎不会去判断该站点是中文站还是英文站,所以这句话就是让搜索引擎知道,你的站点是中文站,对html页面本身不会有影响。
是一种html语言规范。

<html lang="en"></html>
lang是language的缩写,代表该网页属于哪一个国家或是地区的网页。
下面列举几个常用lang:
en-US 英国(美国)
zh-CN 中文(简体,中国大陆)
zh-SG 中文(简体,新加坡)
zh-HK 中文(繁体,香港)
zh-MO 中文(繁体,澳门)
zh-TW 中文(繁体,台湾)

007-html的书写规范

在这里插入图片描述

<!DOCTYPE>标记声明必须位于 HTML 文档的第一行,放在<html>标记之前。
此标记用于告诉浏览器文档使用哪种 HTML 或 XHTML 规范,该标记可声明三种类型,
分别是:严格版本、过渡版本以及基于框架的 HTML 文档(strict、transitional 以及 frameset)。

使用示例:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

008-html标签的介绍

在这里插入图片描述

标签分为:
	双标签:
		<p>		</p>
		开始标签	结束标签
	单标签:
		<p />
		自结束标签

HTML 与 XHTML 之间的差异
在 HTML 中,<br> 标签没有结束标签。
在 XHTML 中,<br> 标签必须被正确地关闭,比如这样:<br />。

009-html标签的语法

<!-- ①标签不能交叉嵌套 -->
正确:<div><span>早安,尚硅谷</span></div> 
错误:<div><span>早安,尚硅谷</div></span>
<hr />

<!-- ②标签必须正确关闭 -->
<!-- i.有文本内容的标签: -->
 
正确:<div>早安,尚硅谷</div> 
错误:<div>早安,尚硅谷
<hr />

<!-- ii.没有文本内容的标签: -->
正确:<br />
错误:<br>
<hr />

<!-- ③属性必须有值,属性值必须加引号 -->
正确:<font color="blue">早安,尚硅谷</font> 
错误:<font color=blue>早安,尚硅谷</font> 
错误:<font color>早安,尚硅谷</font>
<hr />

<!-- ④注释不能嵌套 -->
正确:<!-- 注释内容 --> <br/>
错误:<!--	<!--	这是错误的 html 注释	-->	-->
<hr />

010-html常用标签介绍

可以在w3shool或w3cshool网站查询学习html

(1)font标签

<body>
  <!-- 字体标签
  需求1:在网页上显示我是字体标签,并修改字体为宋体,颜色为红色。

  font 标签是字体标签,它可以用来修改文本的字体,颜色,大小(尺寸)
  color属性修改颜色
  face 属性修改字体
  size 属性修改文本大小
  -->
  <font color="red" face="宋体" size="5">我是字体标签</font>

</body>

(2)特殊字符

<body>
<!--  特殊字符
  需求1:把 <br> 换行标签变成文本转换成字符显示在页面上
    把<br>以文本形式显示出来
    &lt;br&gt;

  常用的特殊字符:
    < ===> &lt;
    > ===> &gt;
    空格 ===> &nbsp;
    
-->

  我是&lt;br&gt;标签
  <br>
  我好帅&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</body>

在这里插入图片描述

(3)标题标签

<body>
  <!-- 标题标签

  需求1:演示标题1 到标题6 的

  h1 - h6 都是标题标签
  h1 最大
  h6 最小

  align 属性是对齐属性
    left	左对齐(默认)
    center	剧中
    right	右对齐
  -->
  <h1 align="left">标题 1</h1>
  <h2 align="center">标题 2</h2>
  <h3 align="right">标题 3</h3>
  <h4>标题 4</h4>
  <h5>标题 5</h5>
  <h6>标题 6</h6>
  <h7>标题 7</h7>

</body>

(4)超链接标签

在网页中所有点击之后可以跳转的内容都是超连接 
<body>
  <!--
  a 标签是 超链接
    href 属性设置连接的地址
    target 属性设置哪个目标进行跳转
      _self	  表示当前页面(默认值)
      _blank	表示打开新页面来进行跳转
  -->
  <a href="https://www.baidu.com">百度</a>
  <br/>
  <a href="https://www.baidu.com" target="_self">百度_self</a>
  <br/>
  <a href="https://www.baidu.com" target="_blank">百度_blank</a>

</body>

(5)列表标签

<body>
<!--  列表标签分为:无需列表和有序列表
  需求 1:使用无序列表方式,把东北 F4,赵四,刘能,小沈阳,宋小宝,展示出来

  ul 是无序列表
    li 是列表项
    type 属性可以修改列表项前面的符号

  ol 是有序列表

 -->

<!--  无序列表-->
  <ul type="circle">
    <li>赵四</li>
    <li>刘能</li>
    <li>小沈阳</li>
    <li>宋小宝</li>
  </ul>

<!--有序列表-->
<ol>
  <li>赵四</li>
  <li>刘能</li>
  <li>小沈阳</li>
  <li>宋小宝</li>
</ol>

<body>

在这里插入图片描述

(6)img标签

<body>
<!--
  需求1:使用img 标签显示一张美女的照片。并修改宽高,和边框属性

  img 标签是图片标签,用来显示图片
    src 属性可以设置图片的路径

      在web 中路径分为相对路径和绝对路径两种
        相对路径:
          .	      表示当前文件所在的目录
          ..	    表示当前文件所在的上一级目录
          文件名	表示当前文件所在目录的文件,  相当于 ./文件名   ./ 可以省略

        绝对路径:
          正确格式是: https://ip地址:port端口号/工程名/资源路径
          错误格式是: 盘符:/目录/文件名

      在JavaSE 中路径也分为相对路径和绝对路径.
        相对路径: 从工程名开始算
        绝对路径: 盘符:/目录/文件名

    width 属性设置图片的宽度
    height 属性设置图片的高度
    border 属性设置图片边框大小
    alt 属性设置当指定路径找不到图片时,用来代替显示的文本内容
-->
  <img src="../pictures/01.bmp" width="1245" height="344" border="1" alt="图片找不到" />

</body>

(7)表格标签

<body>
  <!--
    需求 1:做一个 带表头的 ,三行,三列的表格,并显示边框
    需求 2:修改表格的宽度,高度,表格的对齐方式,单元格间距。
  
    table标签是表格标签
      属性:
        border  设置表格边框大小
        width   设置表格宽度
        height  设置表格高度
        align   设置表格相对于页面的对齐方式
        cellspacing 设置单元格间距
  
    tr 是行标签
    th 是表头标签    th表头标签直接实现了加粗+居中
    td 是单元格标签
    align 设置单元格文本对齐方式
    b 是加粗标签
  -->
  <table border="1" width="300" height="300" align="center" cellspacing="2">
    <tr>
      <td align="center"><b>1.1</b></td>
      <th>1.2</th>
      <td>1.3</td>
    </tr>
    <tr>
      <td>2.1</td>
      <td>2.2</td>
      <td>2.3</td>
    </tr>
    <tr>
      <td>3.1</td>
      <td>3.2</td>
      <td>3.3</td>
    </tr>
  </table>
</body>
1.td:英文全称是"tabledatacell",中文意思是“表中的数据单元”。

2.tr:英文全称是"tablerow"的缩写”的缩写。

3.th:英文全称是"tableheadercell"的缩写,在中文中是“表头单元格”的意思。

(8)跨行跨列表格

<body>
<!--
需求 1:
  新建一个五行,五列的表格,
  第一行,第一列的单元格要跨两列, 第二行第一列的单元格跨两行,
  第四行第四列的单元格跨两行两列。

  colspan 属性设置跨列
  rowspan 属性设置跨行
-->
  <table width="500" height="500" cellspacing="0" border="1">
    <tr>
      <td colspan="2">1.1</td>
      <td>1.3</td>
      <td>1.4</td>
      <td>1.5</td>
    </tr>
    <tr>
      <td rowspan="2">2.1</td>
      <td>2.2</td>
      <td>2.3</td>
      <td>2.4</td>
      <td>2.5</td>
    </tr>
    <tr>
      <td>3.2</td>
      <td>3.3</td>
      <td>3.4</td>
      <td>3.5</td>
    </tr>
    <tr>
      <td>4.1</td>
      <td>4.2</td>
      <td>4.3</td>
      <td rowspan="2" colspan="2">4.4</td>
    </tr>
    <tr>
      <td>5.1</td>
      <td>5.2</td>
      <td>5.3</td>
    </tr>
  </table>
</body>

(9)iframe框架标签

iframe 标签它可以在一个 html 页面上,打开一个小窗口,去加载一个单独的页面.
<body>
  我是一个单独的完整的页面
  <br>
  <!--
  iframe 标签可以在页面上开辟一个小区域显示一个单独的页面
  iframe 和a 标签组合使用(在列表中选择后,iframe中出现相应变化)的步骤:
    1.	在 iframe 标签中使用 name 属性定义一个名称
    2.	在 a 标签的 target 属性上设置iframe 的 name 的属性值
  -->
  <iframe src="3-标题标签.html" width="500" height="400" name="abc"></iframe>
  <br>
  <br>

  <ul>
    <li><a href="1-font标签.html" target="abc">1-font标签.html</a></li>
    <li><a href="2-特殊字符.html" target="abc">2-特殊字符.html</a></li>
    <li><a href="3-标题标签.html" target="abc">3-标题标签.html</a></li>
  </ul>

</body>

(10)表单标签

什么是表单?
表单就是 html 页面中,用来收集用户信息的所有元素集合.然后把这些信息发送给服务器.

在这里插入图片描述

<!--
  需求 1:
    创建一个个人信息注册的表单界面。
    包含用户名,密码,确认密码。
    性别(单选),兴趣爱好(多选),国籍(下拉列表)。
    隐藏域,自我评价(多行文本域)。重置,提交。

    form 标签就是表单
      input type=text	是文件输入框 value 设置默认显示内容
      input type=password 是密码输入框 value 设置默认显示内容
      input type=radio	是单选框	name 属性可以对其进行分组	checked="checked"表示默认选中
      input type=checkbox 是复选框 checked="checked"表示默认选中
      input type=reset  是重置按钮  value 属性修改按钮上的文本
      input type=submit 是提交按钮 value 属性修改按钮上的文本
      input type=button  是按钮    value 属性修改按钮上的文本
      input type=file 是文件上传域
      input type=hidden	是隐藏域	当我们要发送某些信息,而这些信息,不需要用户参与,就可以使用隐藏域(提交的时候同时发送给服务器)

      select 标签是下拉列表框
        option 标签是下拉列表框中的选项 selected="selected"设置默认选中

      textarea 表示多行文本输入框 (起始标签和结束标签中的内容是默认值)
        rows 属性设置可以显示几行的高度
        cols 属性设置每行可以显示几个字符宽度
-->
<form>
  用户名称:<input type="text" value="默认值" />
  <br>
  用户密码:<input type="password" value="abc" />
  <br>
  确认密码:<input type="password" value="abc" />
  <br>
  性别:<input type="radio" name="sex" checked="checked" /><input type="radio" name="sex" /><br>
  兴趣爱好:<input type="checkbox" checked="checked" />Java <input type="checkbox" />JavaScript <input type="checkbox" />C++
  <br>
  国籍:<select>
          <option>--请选择国籍--</option>
          <option selected="selected">中国</option>
          <option>美国</option>
          <option>日本</option>
        </select>
  <br>
  自我评价:<textarea cols="30" rows="10"></textarea>
  <br>
  <input type="submit" value="提交" />
  <br>
  <input type="reset" value="重置" />
  <br>
  <input type="file" />
  <br>
  <input type="hidden" />

</form>

</body>

在这里插入图片描述

(11)表单格式化

使用表格来做表单让表单更好看
<body>
  <!--  使用表格来做表单让表单更好看-->
  <form>
    <h1 align="center"> 用户注册</h1>
    <table align="center">
      <tr>
        <td>用户名称:</td>
        <td><input type="text" value="默认值" /></td>
      </tr>
      <tr>
        <td>用户密码:</td>
        <td><input type="password" value="abc" /></td>
      </tr>
      <tr>
        <td>确认密码:</td>
        <td><input type="password" value="abc" /></td>
      </tr>
      <tr>
        <td>性别:</td>
        <td>
            <input type="radio" name="sex" checked="checked" /><input type="radio" name="sex" /></td>
      </tr>
      <tr>
        <td>兴趣爱好:</td>
        <td>
          <input type="checkbox" checked="checked" />Java
          <input type="checkbox" />JavaScript
          <input type="checkbox" />C++
        </td>
      </tr>
      <tr>
        <td>国籍:</td>
        <td>
          <select>
            <option>--请选择国籍--</option>
            <option selected="selected">中国</option>
            <option>美国</option>
            <option>日本</option>
          </select>
        </td>
      </tr>
      <tr>
        <td>自我评价:</td>
        <td><textarea cols="30" rows="10"></textarea></td>
      </tr>
      <tr>
        <td><input type="reset" value="重置"></td>
        <td align="center"><input type="submit" value="提交"></td>
      </tr>
    </table>
  </form>

</body>

(12)表单提交细节

如何把表单中填写的数据提交给服务器?
<body>
<!--
  如何把表单中填写的数据提交给服务器?

  form 标签是表单标签
    action 属性设置提交的服务器地址
    method 属性设置提交的方式 GET(默认值)或 POST
-->
<form action="https://localhost:8080" method="get">

  <input type="hidden" name="action" value="login">

  <h1 align="center"> 用户注册</h1>
  <table align="center">
    <tr>
      <td>用户名称:</td>
      <td><input type="text" value="默认值" /></td>
    </tr>
    <tr>
      <td>用户密码:</td>
      <td><input type="password" value="abc" /></td>
    </tr>
    <tr>
      <td>确认密码:</td>
      <td><input type="password" value="abc" /></td>
    </tr>
    <tr>
      <td>性别:</td>
      <td>
        <input type="radio" name="sex" checked="checked" /><input type="radio" name="sex" /></td>
    </tr>
    <tr>
      <td>兴趣爱好:</td>
      <td>
        <input type="checkbox" checked="checked" />Java
        <input type="checkbox" />JavaScript
        <input type="checkbox" />C++
      </td>
    </tr>
    <tr>
      <td>国籍:</td>
      <td>
        <select>
          <option>--请选择国籍--</option>
          <option selected="selected">中国</option>
          <option>美国</option>
          <option>日本</option>
        </select>
      </td>
    </tr>
    <tr>
      <td>自我评价:</td>
      <td><textarea cols="30" rows="10"></textarea></td>
    </tr>
    <tr>
      <td><input type="reset" value="重置"></td>
      <td align="center"><input type="submit" value="提交"></td>
    </tr>
  </table>
</form>
</body>
上述代码提交后,地址栏中显示:
	https://localhost:8080/?action=login&sex=on
	
	https://localhost:8080/      服务器地址
	?                           分隔符
	action=login&sex=on			 请求参数(要提交的表单中填写的信息)

	但是为什么只有 hidden的和sex的,其他的信息怎么没有?
		因为 表单项没有 name 属性值
		给相应的标签添加name属性值
		之后再输入提交后显示如下:

https://localhost:8080/
?
action=login  隐藏域
&
username=sad  用户名
&
userpassword=asd  密码
&
sex=on  性别
&
hobby=on  兴趣爱好
&
hobby=on  兴趣爱好
& 
hobby=on  兴趣爱好
&
country=%E7%BE%8E%E5%9B%BD   国籍
&
description=aaa  自我描述


为什么都是 on ?
	sex=on  性别
	&
	hobby=on  兴趣爱好
	&
	hobby=on  兴趣爱好
	& 
	hobby=on  兴趣爱好

on代表选上,off代表没选上
	因为单选框,复选框,下拉列表的option标签等没有加value属性值
	on发送给服务器是没有意义的
	有些标签如text password textarea等不加value属性值是因为用户输入的信息即是value值

	  
总结:
表单提交的时候,数据没有发送给服务器的三种情况:
	1、表单项没有 name 属性值
    2、单选、复选(下拉列表中的 option 标签)都需要添加 value 属性,以便发送给服务器
	3、表单项不在提交的 form 标签中

------------------------------------------------------------

method 属性设置提交的方式 GET(默认值)或 POST	
  GET 请求的特点是:
    1、浏览器地址栏中的地址是:action=属性[+?+请求参数]
        请求参数的格式是:name=value&name=value
    2、不安全
    3、它有数据长度的限制

  POST 请求的特点是:
    1、浏览器地址栏中只有服务器的地址
    2、相对于 GET 请求要安全
    3、理论上没有数据长度的限制
<body>
<form action="https://localhost:8080" method="post">

  <input type="hidden" name="action" value="login">

  <h1 align="center"> 用户注册</h1>
  <table align="center">
    <tr>
      <td>用户名称:</td>
      <td><input type="text" name="username" /></td>
    </tr>
    <tr>
      <td>用户密码:</td>
      <td><input type="password" name="userpassword" /></td>
    </tr>
    <tr>
      <td>性别:</td>
      <td>
        <input type="radio" name="sex" checked="checked" value="boy"/><input type="radio" name="sex" value="girl"/></td>
    </tr>
    <tr>
      <td>兴趣爱好:</td>
      <td>
        <input type="checkbox" checked="checked" name="hobby" value="Java"/>Java
        <input type="checkbox" name="hobby" value="JavaScript"/>JavaScript
        <input type="checkbox" name="hobby" value="C++"/>C++
      </td>
    </tr>
    <tr>
      <td>国籍:</td>
      <td>
        <select name="country">
          <option value="none">--请选择国籍--</option>
          <option selected="selected" value="China">中国</option>
          <option value="America">美国</option>
          <option value="Japan">日本</option>
        </select>
      </td>
    </tr>
    <tr>
      <td>自我评价:</td>
      <td><textarea cols="30" rows="10" name="description"></textarea></td>
    </tr>
    <tr>
      <td><input type="reset" value="重置"></td>
      <td align="center"><input type="submit" value="提交"></td>
    </tr>
  </table>
</form>
</body>

(11)其他标签

<body>
<!--
需求 1:div、span、p 标签的演示
  div 标签    默认独占一行
  span 标签   它的长度是封装数据的长度(不独占一行)
  p  段落标签  默认会在段落的上方或下方各空出一行来(如果已有就不再空)
-->
  <div>div1</div>
  <div>div2</div>
  <span>span1</span>
  <span>span2</span>
  <p>p段落标签1</p>
  <p>p段落标签2</p>

</body>

在这里插入图片描述

二、CSS

001-css技术介绍

CSS 是「层叠样式表单」。是用于(增强) 控制网页样式 并允许 将样式信息与网页内容分离的 一种标记性语言。

css就是修改标签的样式,给标签化妆,显得更好看

可以在 文档:CSS2.0.chm 中查找写法

002-css语法规则

在这里插入图片描述

选择器:浏览器根据“选择器” 决定 受CSS样式影响的  HTML元素(标签)

属性 (property) :是你要改变的样式名,并且每个属性都有一个值。
属性和值被冒号分开,并由花括号包围,这样就组成了一个完整的样式声明(declaration),例如:p {color: blue}

多个声明:如果要定义不止一个声明,则需要用分号将每个声明分开。虽然最后一条声明的最后可以不加分号(但尽量在每条声明的末尾都加上分号)
例如:

	p{
	
	color:red;
	 
	font-size:30px;
	
	}

注:一般每行只描述一个属性

CSS 注释:/*注释内容*/

003-html与css结合方式

(1)第一种方式

<!--  第一种:设置标签的style属性 style="key:value" 修改标签的样式-->

<!--需求 1:分别定义两个 div、span 标签,分别修改每个 div 标签的样式为:边框 1 个像素,实线,红色。-->
<div style="border: 1px solid red;">div 标签 1</div>
<div style="border: 1px solid red;">div 标签 2</div>
<span style="border: 1px solid red;">span 标签 1</span>
<span style="border: 1px solid red;">span 标签 2</span>

</body>
问题:这种方式的缺点?
1.	如果标签多了。样式多了。代码量非常庞大。
2.	可读性非常差。
3.	Css 代码没什么复用性可方言。

(2)第二种方式

在 head 标签中,使用 style 标签来定义各种自己需要的 css 样式。
格式如下:
	xxx {
	Key : value value;
	Key : value value;
	}
<head>
  <!--style 标签专门用来定义 css 样式代码-->
  <style type="text/css">
    /* 需求 1:分别定义两个 div、span 标签,分别修改每个 div 标签的样式为:边框 1 个像素,实线,红色。*/
    div{
      
      
      border: 1px solid red;
    }
    span{
      
      
      border: 1px solid red;
    }
  </style>

</head>
<body>
  <div>div 标签 1</div>
  <div>div 标签 2</div>

  <span>span 标签 1</span>
  <span>span 标签 2</span>
</body>
问题:这种方式的缺点。
1.	只能在同一页面内复用代码,不能在多个页面中复用 css 代码。
2.	维护起来不方便,实际的项目中会有成千上万的页面,要到每个页面中去修改。工作量太大了。

(3)第三种方式

把 css 样式写成一个单独的 css 文件,再通过 link 标签引入即可复用。
<head>

  <!--link 标签专门用来引入 css 样式代码-->
  <link rel="stylesheet" type="text/css" href="1.css" />
  
</head>
<body>
  <div>div 标签 1</div>
  <div>div 标签 2</div>

  <span>span 标签 1</span>
  <span>span 标签 2</span>
</body>
css文件

div{
  border: 1px solid yellow;
}
span{
  border: 1px solid red;
}
使用link标签链接一个外部样式表

<link> 标签定义文档与外部资源的关系。
<link> 标签最常见的用途是链接样式表。

rel 属性规定当前文档与被链接文档之间的关系。
rel ="stylesheet" 代表连链接的是外部样式表

href属性=URL	规定被链接文档的位置。

004-css选择器

(1)标签名选择器

标签名选择器的格式是: 

标签名{
	属性:值;
}

标签名选择器,可以决定哪些标签被动的使用这个样式。
<head>
  <!--
  需求 1:在所有 div 标签上修改字体颜色为蓝色,字体大小 30 个像素。边框为 1 像素黄色实线。
  并且修改所有 span 标签的字体颜色为黄色,字体大小 20 个像素。边框为 5 像素蓝色虚线。
  -->
  
  <style type="text/css">
    div{
      
      
      border: 1px solid yellow;
      color: blue;
      font-size: 30px;
    }
    span{
      
      
      border: 5px dashed blue;
      color: yellow;
      font-size: 20px;
    }
  </style>


</head>
<body>
  <div>div 标签 1</div>
  <div>div 标签 2</div>
  <span>span 标签 1</span>
  <span>span 标签 2</span>
</body>

(2)id选择器

id 选择器的格式是:
	#id 属性值{
	属性:值;
	}

id 选择器,可以让我们通过标签的 id 属性选择性的去使用这个样式。
<head>

  <!--
  需求 1:分别定义两个 div 标签,
  第一个 div 标签定义 id 为 id001 ,然后根据 id 属性定义 css 样式修改字体颜色为蓝色, 字体大小 30 个像素。边框为 1 像素黄色实线。
  第二个 div 标签定义 id 为 id002 ,然后根据 id  属性定义 css 样式 修改的字体颜色为红色,字体大小 20 个像素。边框为 5 像素蓝色点线。
  -->

  <style type="text/css">
    #id001{
      
      
      color: blue;
      font-size: 30px;
      border: 1px solid yellow;
    }
    #id002{
      
      
      color: red;
      font-size: 20px;
      border: 5px dotted blue;
    }
  </style>

</head>
<body>
  <div id="id001">div标签1</div>
  <div id="id002">div标签2</div>
</body>

(3)class类选择器

class 类型选择器的格式是:
	.class属性值{
	属性:值;
	}

class 类型选择器,可以通过每个标签的 class 属性有效的选择性地去使用这个样式。
class值相同的标签为一类,共用同一个样式。
<head>
  <meta charset="UTF-8">
  <title>Title</title>

  <!--
  需求 1:修改 class 属性值为 class01 的 span 或 div 标签,字体颜色为蓝色,字体大小 30 个像素。边框为 1 像素黄色实线。
  需求 2:修改 class 属性值为 class02 的 div 标签,字体颜色为灰色,字体大小 26 个像素。边框为 1 像素红色实线。
  -->
  
  <style type="text/css">
    .class01{
      
      
      color: blue;
      font-size: 30px;
      border: 1px solid yellow;
    }
    .class02{
      
      
      color: red;
      font-size: 20px;
      border: 5px dotted blue;
    }
  </style>

</head>
<body>
  <div class="class01">div标签class01</div>
  <div class="class02">div标签class02</div>
  <span class="class01">span标签class01</span>
  <span>span标签2</span>

</body>

005-组合选择器

组合选择器的格式是:
	选择器 1,选择器 2,选择器 n{
	属性:值;
	}

组合选择器可以让多个选择器共用同一个 css 样式代码。
<head>

  <!--
    需求 1:修改 class="class01" 的div 标签 和 id="id01" 所有的 span 标签,
    字体颜色为蓝色,字体大小 20 个像素。边框为 1 像素黄色实线。
  -->
  <style type="text/css">
    .class01,#id01{
      
      
      color: blue;
      font-size: 20px;
      border: 1px solid yellow;
    }
  </style>

</head>
<body>
  <div class="class01">div标签class01</div>
  <span id="id01">span标签id01</span>
  <div>div标签</div>
  <span>span标签</span>

</body>

006-css常用样式

这些样式和它们的用法都可以在css2.0.chm文件里查到

1、字体颜色

color:red;

颜色可以写颜色名如:black, blue, red, green 等
颜色也可以写 rgb 值和十六进制表示值:如 rgb(255,0,0),#00F6DE,如果写十六进制值必须加#


2、宽度

width:19px;

宽度可以写像素值:19px; 也可以写百分比值:20%;


3、高度

height:20px;

高度可以写像素值:19px; 也可以写百分比值:20%;


4、背景颜色

background-color:#0F2D4C


5、字体样式:
color:#FF0000;字体颜色红色
font-size:20px; 字体大小


6、红色 1 像素实线边框
border:1px solid red;

实线 solid
虚线 dashed
点线 dotted


7、DIV 居中
margin-left: auto;
margin-right: auto;


8、文本居中:

text-align: center;
 
 
9、超连接去下划线

text-decoration: none;


10、表格细线
table {
	border: 1px solid black; /*设置边框*/
	border-collapse: collapse; /*将边框合并*/
}

td,th {
	border: 1px solid black; /*设置边框*/
}


11、列表去除前面的修饰图形
ul {
	list-style: none;
}
<head>

  <style type="text/css">
    div{
      
      
      color: red;
      border: 1px yellow solid;
      width: 300px;
      height: 300px;
      background-color: green;
      font-size: 30px;
      margin-left: auto;
      margin-right: auto;
      text-align: center;
    }

    a{
      
      
      text-decoration: none;
    }

    table{
      
      
      border: 1px solid black; /*设置边框*/
      border-collapse: collapse; /*将边框合并*/
    }

    td{
      
      
      border: 1px solid black; /*设置边框*/
    }

    ul{
      
      
      list-style: none;
    }

  </style>
</head>
<body>

  <div>我是div标签</div>
  <a href="www.baidu.com">百度</a>

  <table>
    <tr>
      <td>1.1</td>
      <td>1.2</td>
    </tr>
  </table>

  <ul>
    <li>11111111111</li>
    <li>11111111111</li>
    <li>11111111111</li>
    <li>11111111111</li>
    <li>11111111111</li>
  </ul>

</body>

三、JavaScript

001-javascript介绍

Javascript 语言诞生主要是完成页面的数据验证。
因此它运行在客户端,需要运行浏览器来解析执行 JavaScript 代码。

JS 是 Netscape 网景公司的产品,最早取名为 LiveScript;为了吸引更多 java 程序员。更名为 JavaScript。

JS 是弱类型,Java 是强类型。
弱类型就是类型可变;强类型就是定义变量时,类型已确定无法改变。

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

主要功能:
	1.嵌入动态文本于HTML页面。 
	2.对浏览器事件做出响应。 
	3.读写HTML元素。 
	4.在数据被提交到服务器之前验证数据。
	5.检测访客的浏览器信息。控制cookies,包括创建和修改等。
	6.基于Node.js技术进行服务器端编程。 

语言组成:
	ECMAScript,描述了该语言的语法和基本对象。
	文档对象模型(DOM),描述处理网页内容的方法和接口。
	浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口。

JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发。
常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。
通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。 

说白了就是让网页动起来。

002-JavaScript 和 html 代码的结合方式

(1)第一种方式

只需要在 head 标签中,或者在 body 标签中, 使用 script 标签 来书写
<head>
  
  <script type="text/javascript">
    // alert 是 JavaScript 语言提供的一个警告框函数。
    // 它可以接收任意类型的参数,这个参数就是警告框的提示信息
    alert("hello javaScript!");
  </script>

</head>

(2)第二种方式

使用 script 标签引入 单独的 JavaScript 代码文件
<head>

  <!--
  现在需要使用 script 引入外部的 js 文件来执行
    src 属性专门用来引入 js 文件路径(可以是相对路径,也可以是绝对路径)

  script 标签可以用来定义 js 代码,也可以用来引入 js 文件
  但是,两个功能二选一使用。不能同时使用两个功能
  -->
  
  <!--  两种方式-->
  <script type="text/javascript" src="1.js"></script>

  <script type="text/javascript">
    alert("hello javaScript!");
  </script>

</head>
1.js文件
alert("hello");

003-变量

什么是变量?
	变量是可以存放某些值的内存的命名。

JavaScript 的变量类型:
	数值类型: 	number
	字符串类型: 	string
	对象类型: 	object
	布尔类型: 	boolean
	函数类型: 	function

JavaScript 里特殊的值:
	undefined 	未定义,所有 js 变量未赋于初始值的时候,默认值都是 undefined.
	null		空值
	NaN 		全称是:Not a Number。非数字。非数值。

JS 中的定义变量格式:
	var 变量名;
	var 变量名 = 值;
</head>

  <script type="text/javascript">
    var i;
    alert(i);//undefined

    i=12;
    //typeof()是js语言提供的一个函数:返回变量的类型
    alert(typeof(i));//number

    i="abc";
    alert(typeof(i));//string

    var a=12;
    var b="abc";
    alert(a*b);//NaN

  </script>

<body>

004-关系(比较)运算

等于: == 等于是简单的做字面值的比较
全等于: === 除了做字面值的比较之外,还会比较两个变量的数据类型
<head>

  <script type="text/javascript">
    var a = "12";
    var b = 12;
    alert( a == b ); // true
    alert( a === b ); // false
  </script>

</head>

005-逻辑运算

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

在 JavaScript 语言中,所有的变量,都可以做为一个 boolean 类型的变量去使用。
	0 、null、 undefined、””(空串) 都认为是 false;
<head>

  <script type="text/javascript">
    //在 JavaScript 语言中,所有的变量,都可以做为一个 boolean 类型的变量去使用
    var i=0;
    if (i){
      
      
      alert("零为真");
    }else {
      
      
      alert("零为假");
    }
    //零为假
    //同理:0 、null、 undefined、""(空串) 都是 false


    var a = "abc";
    var b = true;
    var d = false;
    var c = null

/*  && 且运算。
    有两种情况:
    第一种:当表达式全为真的时候。返回最后一个表达式的值。
    第二种:当表达式中,有一个为假的时候。返回第一个为假的表达式的*/
    alert(a&&b);//true
    alert(b&&a);//abc
    alert(a&&d);//false
    alert(a&&c);//null
    alert(a&&d&&c);//false
    alert(a&&c&&d);//null

/*  || 或运算
    第一种情况:当表达式全为假时,返回最后一个表达式的值
    第二种情况:只要有一个表达式为真。就会把回第一个为真的表达式的值*/
    alert(d||c);//null
    alert(c||d);//false
    alert(a||c);//abc
    alert(b||c);//true

/*  && 与运算 和 ||或运算 有短路。
    短路就是说,当这个&&或||运算有结果了之后 。后面的表达式不再执行*/

  </script>
</head>

006-数组

数组的定义方式:
	var 数组名 = []; // 空数组
	var 数组名 = [1 , ’abc’ , true]; // 定义数组同时赋值元素
<head>

  <script type="text/javascript">
    var arr=[];
    alert(arr.length);//空数组 0

    arr[0]=12;
    alert(arr.length);//1

    arr[2]="abc";
    alert(arr.length);//3

    alert(arr[1]);//undefined

    //js语言中的数组,只要我们通过数组下标赋值,就会自动的给数组做扩容操作

    //数组遍历
    for (var i = 0; i < arr.length; i++) {
      
      
      alert(arr[i]);
    }

    var arr1=[true,11,"abc"];

  </script>
  
</head>

007-函数

使用 function 关键字来定义函数

(1)函数的两种定义方式

(1)第一种定义方式
	
格式如下:
	function 函数名(形参列表){
		函数体
	}

在 JavaScript 语言中,如何定义带有返回值的函数?
	只需要在函数体内直接使用 return语句返回值即可!
<head>

  <script type="text/javascript">
    //定义一个无参函数
    function fun(){
      
      
      alert("无参函数fun()被调用了");
    }

    fun();

    //定义一个有参函数
    function fun2(a,b){
      
      
      alert("有参函数fun2()被调用了 a="+a+" b="+b);
    }

    fun2(12,"abc");


    //定义带有返回值的函数
    function sum(num1,num2){
      
      
      var res=num1+num2;
      return res;
    }
    alert(sum(100,50));

  </script>

</head>
(2)第二种定义方式

格式如下:
	var 函数名 = function(形参列表){
		函数体
	}
<head>

  <script type="text/javascript">
    var fun = function (){
      
      
      alert("无参函数");
    }
    fun();

    var fun2 = function (a,b){
      
      
      alert("有参函数a="+a+",b="+b);
    }
    fun2(1,2);

    var fun3 = function (num1,num2){
      
      
      return num1+num2;
    }
    alert(fun3(100,200));

  </script>
  
</head>
js中是不允许函数重载的,重载会直接覆盖掉上一次的定义
<head>

  <script type="text/javascript">
    function fun() {
      
      
      alert("无参函数 fun()");
    }

    function fun(a,b) {
      
      
      alert("有参函数 fun(a,b)");
    }

    fun();//无法调用无参函数,直接调用了有参函数

  </script>

</head>

(2)函数的 arguments 隐形参数(只在 function 函数内)

function fun(){
	alert("无参函数fun()");
}
fun(1,"abc");
虽然是无参函数但是还是可以传参数,因为有隐形参数

就是在 function 函数中不需要定义,但却可以直接用来获取所有参数的变量。我们管它叫隐形参数。
隐形参数特别像 java 基础的可变长参数一样。
public void fun( Object ... args );
可变长参数其实是一个数组。

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

  <script type="text/javascript">
    function fun(a){
      
      
      alert(arguments.length);//3

      alert(arguments[0]);//1
      alert(arguments[1]);//ab
      alert(arguments[2]);//true

      alert("a="+a);

      alert("无参函数fun()");

    }

    fun(1,"ab",true);//形参有几个都没关系,实参想传几个都行



    //需求:编写一个函数,计算所有参数相加的和
    function sum(num1,num2){
      
      
      var res=0;
      for (var i = 0; i < arguments.length; i++) {
      
      
        if (typeof(arguments[i])=="number"){
      
      
          res+=arguments[i];
        }
      }
      return res;
    }

    alert(sum(1,2,3,4,5,6,7,8,9));//实参的个数与形参的个数无关
    
  </script>
  
</head>

008-js中的自定义对象

(1)第一种方式

Object 形式的自定义对象

对象的定义:
	var 变量名 = new Object(); // 对象实例(空对象)
	变量名.属性名 = 值; // 定义一个属性
	变量名.函数名 = function(){} // 定义一个函数
	
对象的访问:
	变量名.属性 / 函数名();
<head>

  <script type="text/javascript">
    // 对象的定义:
    // var 变量名 = new Object(); // 对象实例(空对象)
    // 变量名.属性名 = 值; // 定义一个属性
    // 变量名.函数名 = function(){} // 定义一个函数
    var obj=new Object();
    obj.name="华仔";
    obj.age=18;
    obj.fun=function (){
      
      
      alert("姓名:"+this.name+",年龄:"+this.age);
    }

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

  </script>

</head>

(2)第二种方式

{}花括号形式的自定义对象

对象的定义:
	var 变量名 = { // 空对象
	属性名:值, // 定义一个属性
	属性名:值, // 定义一个属性
	函数名:function(){} // 定义一个函数
	};

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

  <script type="text/javascript">
    // 对象的定义:
    // var 变量名 = { // 空对象
    // 属性名:值, // 定义一个属性
    // 属性名:值, // 定义一个属性
    // 函数名:function(){} // 定义一个函数
    // };
    var obj={
      
      
      name:"国哥",
      age:18,
      fun:function (){
      
      
        alert("姓名:"+this.name+",年龄:"+this.age);
      }
    }

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

</head>

009-js中的事件

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

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

使用事件之前要进行事件的注册(绑定)

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

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

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

动态注册基本步骤:
	1、获取标签对象
	2、标签对象.事件名 = fucntion(){}

(1)onload 加载完成事件

window.οnlοad=function()是什么意思?
	onload是window窗口对象的事件属性,
	语句是把“匿名函数”赋值给window的onload事件属性,
	当window加载完成时会触发onload事件,也就触发了“匿名函数”,执行函数体内的语句。
<head>

  <script type="text/javascript">

/*   onload事件是浏览器解析完页面之后就会自动触发的事件
     页面加载完成之后,常用于做页面 js 代码初始化操作
*/

/*    function onloadFun(){
      alert("静态注册onload事件2");
    }
*/

  //动态注册onload事件,是固定写法
  window.onload = function (){
      
      
    alert("动态注册onload事件");
  }

  </script>


</head>

<!--静态注册onload事件1:直接通过标签的事件属性οnlοad="要执行的代码"-->
<!-- <body οnlοad="alert('静态注册onload事件1')"> -->

<!--静态注册onload事件2:直接通过标签的事件属性οnlοad="把要执行的代码写在函数中"-->
<!-- <body οnlοad="onloadFun();"> -->

(2)onclick 单击事件

<head>

  <script type="text/javascript">

    function onclickFun(){
      
      
      alert("静态注册onclick事件");
    }


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

    }

  </script>

</head>
<body>
  <!--静态注册onclick事件-->
  <button onclick="onclickFun();">按钮1</button>

  <!--动态注册onclick事件-->
  <button id="btn01">按钮2</button>
</body>
为什么要写window.onload = function (){}?
	因为如果使用动态注册,不写window.onload的话
	代码自上而下执行,执行到:
		document.getElementById("btn01");
		根本找不到btn01
	所以要使用window.onload,
	当页面全部加载完毕,即自上而下代码全部初始化之后,
	再执行window.onload = function (){再执行这里的代码}

(3)onblur 失去焦点事件

常用用于输入框失去焦点后验证其输入内容是否合法。
<head>

  <script type="text/javascript">
    //静态注册失去焦点事件
    function onblurFun(){
      
      
      alert("静态注册失去焦点事件");

      // console 是控制台对象,是由 JavaScript 语言提供,专门用来向浏览器的控制器打印输出,用于测试使用
      // log() 是打印的方法
      // console.log("静态注册失去焦点事件");
    }

    //动态注册
    window.onload = function (){
      
      
      var passwordObj = document.getElementById("password");
      passwordObj.onblur = function (){
      
      
        alert("动态注册失去焦点事件");
      }
    }

  </script>


</head>
<body>
  <!--静态注册-->
  用户名:<input type="text" onblur="onblurFun();">
  <br>

  <!--动态注册-->
  密码:<input id="password" type="text" >
</body>

(4)onchange 内容发生改变事件

<head>

  <script type="text/javascript">
    //onchange内容发生改变事件:常用于下拉列表和输入框内容发生改变后操作

    //静态注册
    function onchangeFun(){
      
      
      alert("女神已经改变了");
    }

    //动态注册
    window.onload = function (){
      
      
      var selectObj = document.getElementById("sel01");
      selectObj.onchange = function (){
      
      
        alert("男神已经改变了");
      }
    }

  </script>

</head>
<body>
  <!--静态注册-->
  请选择你心中的女神:
  <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>

(5)onsubmit 表单提交事件

<head>

  <script type="text/javascript">
    //onsubmit表单提交事件:常用于表单提交前,验证所有表单项是否合法。

    //静态注册
    function onsubmitFun(){
      
      
      //要验证表单提交内容是否合法,如果有不合法的要阻止表单提交
      //如何阻止?οnsubmit="return false";
      //即当onsubmitFun()函数返回false时,表单不会提交给服务器
      alert("静态注册表单提交事件---发现不合法");
      return false;
    }

    //动态注册
    window.onload = function (){
      
      
      var formObj = document.getElementById("form01");
      formObj.onsubmit = function (){
      
      
        //要验证表单提交内容是否合法,如果有不合法的要阻止表单提交
        alert("静态注册表单提交事件---发现不合法");
        return false;
      }
    }

  </script>

</head>
<body>

  <!--静态注册-->
  <form action="https://localhost:8080" method="get" onsubmit="return onsubmitFun()">
    <input type="submit" value="静态注册">
  </form>

  <!--动态注册-->
  <form action="https://localhost:8080" method="get" id="form01">
    <input type="submit" value="动态注册">
  </form>

</body>

010-DOM模型

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

大白话,就是把文档中的标签,属性,文本,转换成为对象来管理。
那么 它们是如何实现把标签,属性,文本转换成为对象来管理呢。这就是我们马上要学习的重点

在这里插入图片描述

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


什么是对象化??
举例:
有一个人有年龄:18 岁,性别:女,名字:张某某
我们要把这个人的信息对象化怎么办!
Class Person {
	private int age;
	private String sex;
	private String name;
}


那么 html 标签 要 对象化 怎么办?
<body>
<div id="div01">div01</div>
</body>

模拟对象化,相当于:
class Dom{
	private String id; // id 属性
	private String tagName; //表示标签名
	private Dom parentNode; //父亲
	private List<Dom> children; // 孩子结点
	private String innerHTML; // 起始标签和结束标签中间的内容
}

011-Document 对象中的方法介绍

(1)document.getElementById(elementId)
	通过标签的 id 属性查找标签 dom 对象,elementId 是标签的 id 属性值

(2)document.getElementsByName(elementName)
	通过标签的 name 属性查找标签 dom 对象,elementName 标签的 name 属性值

(3)document.getElementsByTagName(tagname)
	通过标签名查找标签 dom 对象。tagname 是标签名

(4)document.createElement( tagName)
	通过给定的标签名,创建一个标签对象。tagName 是要创建的标签名



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

以上三个方法,一定要在页面加载完成之后执行,才能查询到标签对象。

(1)正则表达式

w3cschool菜鸟教程 新版本.chm文件中可以学习html,css,javascript

在这里插入图片描述

正则表达式(RegExp):regular expression
<head>

  <script type="text/javascript">

    //表示要求字符串中是否包含字母e
    var patt1 = new RegExp("e");//正则表达式对象(第一种定义对象方法new)

    alert(patt1);//--> /e/

    var patt2 = /e/;//同上,也是正则表达式对象(第二种定义对象方法,直接写正则表达式)


    //方括号

    //表示字符串中是否包含字母a或字母b或字母c
    var patt3 = /[abc]/;

    //表示字符串中是否包含所有小写字母中的某一个
    var patt4 = /[a-z]/;

    //大写字母中的某一个
    var patt5 = /[A-Z]/;

    //表示字符串中是否包含0-9数字中的某一个
    var patt6 = /[0-9]/;


    //元字符

    // \w 元字符用于查找单词字符。
    // 单词字符包括:a-z、A-Z、0-9,以及下划线, 包含 _ (下划线) 字符。
    var patt7 = /\w/;//也可以var patt7 = new RegExp("\w");


    //量词

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

    //表示字符串中是否包含0个或多个a
    var patt9 = /a*/;

    //表示字符串中是否包含1个或0个a
    var patt10 = /a?/;

    //表示字符串中是否包含连续3个a(连续4个a,连续5个a...都成立true)
    var patt11 = /a{3}/;

    //表示字符串中是否包含 至少3个连续的a 最多5个连续的a (超过5个连续的a也是true)
    var patt12 = /a{3,5}/;

    //表示字符串中是否包含 至少3个连续的a
    var patt13 = /a{3,}/;

    //表示字符串必须以a结尾
    var patt14 = /a$/;

    //表示字符串必须以a开头
    var patt15 = /^a/;



    //表示字符串从头到尾必须完全匹配,字符串只能是连续的3个a或连续的4个a或连续的5个a
    //与 var patt12 = /a{3,5}/; --->要求字符串的某一部分包含 至少3个连续的a 最多5个连续的a
    var patt16 = /^a{3,5}$/;



    var str = "aaaa12";
    //正则表达式对象的test()方法,检索字符串中指定的值。有true,没有false
    alert(patt16.test(str));

  </script>
  
</head>
剩下的可以百度搜索或者看文档

(2)getElementById 方法示例

<head>

  <script type="text/javascript">
    // 需求:当用户点击了验证按钮,要获取输出框中的内容。然后验证其是否合法。
    // 验证的规则是:必须由字母,数字。下划线组成。并且长度是 5 到 12 位

    function onclickFun(){
      
      
      //通过id获得标签对象
      var usernameObj = document.getElementById("username");
      //获取text框里的内容
      var usernameText = usernameObj.value;

      //如何验证text框里的内容?正则表达式RegExp
      //var patt = new RegExp("^\w{5,12}$"); patt--->正则表达式RegExp对象
      var patt = /^\w{5,12}$/; //也可以这样之间写


      //合法或者不合法的提示信息使用span标签显示

      //span标签对象
      var usernameSpanObj = document.getElementById("usernameSpan");

      // 标签对象的innerHTML属性 表示起始标签和结束标签之间的内容
      // innerHTML属性 可读可写

      /*
       * 正则表达式对象的test()方法用于测试某个字符串,是不是匹配我的规则,
       * 匹配就返回 true。不匹配就返回 false.
       * */
      if (patt.test(usernameText)){
      
      
        //alert("用户名合法");
        //usernameSpanObj.innerHTML = "用户名合法";

        //除了使用文字作为提示信息,还可以使用图片作为提示信息
        //从网上找到两张图片:对勾图片和打叉图片,放到项目下
        //合法
        usernameSpanObj.innerHTML = "<img src='../pictures/right.png' width='18' height='18'>";

      }else {
      
      
        //alert("用户名不合法");
        //usernameSpanObj.innerHTML = "用户名不合法";

        //图片:不合法
        usernameSpanObj.innerHTML = "<img src='../pictures/wrong.png' width='18' height='18'>";

      }
    }

  </script>

</head>
<body>
  用户名:<input type="text" id="username"/>

  <span style="color: red;" id="usernameSpan"></span>

  <button onclick="onclickFun();">验证</button>

</body>

(3)getElementsByName 方法示例

<head>

  <script type="text/javascript">
    //全选
    function checkAll(){
      
      
      //让所有复选框都选中

      //document.getElementsByName();是根据 指定的 name 属性查询返回多个标签对象集合
      // 这个集合的操作跟数组 一样
      // 集合中每个元素都是 dom 对象
      // 这个集合中的元素顺序是他们在 html 页面中从上到下的顺序
      var hobbies = document.getElementsByName("hobby");
      //alert(hobbies.length);

      //checked属性表示复选框的选中状态。true选中,false表示没选中
      //checked属性 可读可写
      for (var i = 0; i < hobbies.length; i++) {
      
      
        hobbies[i].checked = true;
      }
    }

    //全不选
    function checkNo(){
      
      
      var hobbies = document.getElementsByName("hobby");
      for (var i = 0; i < hobbies.length; i++) {
      
      
        hobbies[i].checked = false;
      }
    }

    //反选
    //选中的取消选中,没选的选中
    function checkReverse(){
      
      
      var hobbies = document.getElementsByName("hobby");
      for (var i = 0; i < hobbies.length; i++) {
      
      

        hobbies[i].checked = !hobbies[i].checked;

/*        if (hobbies[i].checked == true){
          hobbies[i].checked == false;
        }else {
          hobbies[i].checked == true;
        }*/

      }
    }

  </script>

</head>
<body>
  兴趣爱好:
  <input type="checkbox" name="hobby" value="cpp" checked="checked">C++
  <input type="checkbox" name="hobby" value="java">java
  <input type="checkbox" name="hobby" value="js">javaScript
  <br>
  <button onclick="checkAll()">全选</button>
  <button onclick="checkNo()">全不选</button>
  <button onclick="checkReverse()">反选</button>
</body>

(4)getElementsByTagName 方法示例

<head>

  <script type="text/javascript">
    //全选
    function checkAll(){
      
      
      //让所有复选框都选中

      // document.getElementsByTagName("input"); 是按照指定标签名来进行查询并返回集合
      // 这个集合的操作跟数组 一样
      // 集合中都是 dom 对象
      // 集合中元素顺序 是他们在 html 页面中从上到下的顺序。
      var inputs = document.getElementsByTagName("input");

      for (var i = 0; i < inputs.length; i++) {
      
      
        inputs[i].checked = true;
      }

    }

  </script>

</head>
<body>
  兴趣爱好:
  <input type="checkbox" value="cpp" checked="checked">C++
  <input type="checkbox" value="java">java
  <input type="checkbox" value="js">javaScript
  <br>
  <button onclick="checkAll()">全选</button>

</body>

012-节点的常用属性和方法

(1)DOM对象查询练习

节点就是标签对象(但其实注释,文本等也都是节点)

节点的常用属性和方法就是标签的常用属性和方法

方法:
(1)通过具体的元素节点调用getElementsByTagName()方法,获取当前节点的指定标签名孩子节点
(2)appendChild( oChildNode )方法,可以添加一个子节点,oChildNode 是要添加的孩子节点

属性:
childNodes属性,获取当前节点的所有子节点
firstChild属性,获取当前节点的第一个子节点
lastChild属性,获取当前节点的最后一个子节点
parentNode属性,获取当前节点的父节点
nextSibling属性,获取当前节点的下一个节点
previousSibling属性,获取当前节点的上一个节点
className用于获取或设置标签的 class 属性值
innerHTML属性,表示获取/设置起始标签和结束标签中的内容
innerText属性,表示获取/设置起始标签和结束标签中的文本
<head>
  
<link rel="stylesheet" type="text/css" href="style/css.css" />
  
<script type="text/javascript">

	window.onload = function(){
      
      
		//1.查找#bj节点(查找 id=bj 的节点)
		document.getElementById("btn01").onclick = function () {
      
      
			var bjObj = document.getElementById("bj");
			alert(bjObj.innerHTML);
		}

		//2.查找所有li节点
		var btn02Ele = document.getElementById("btn02");
		btn02Ele.onclick = function(){
      
      
			var lis = document.getElementsByTagName("li");
			alert(lis.length)
		};

		//3.查找name=gender的所有节点
		var btn03Ele = document.getElementById("btn03");
		btn03Ele.onclick = function(){
      
      
			var genders = document.getElementsByName("gender");
			alert(genders.length)
		};

		//4.查找#city下所有li节点(查找id=city的节点下的所有li节点)
		var btn04Ele = document.getElementById("btn04");
		btn04Ele.onclick = function(){
      
      
			//1 获取id为city的节点
			//2 通过city节点.getElementsByTagName按标签名查子节点
			var lis = document.getElementById("city").getElementsByTagName("li");
			alert(lis.length)
		};

		//5.返回#city的所有子节点(查找id=city的节点的所有子节点)
		var btn05Ele = document.getElementById("btn05");
		btn05Ele.onclick = function(){
      
      
			//1 获取id为city的节点
			//2 通过city获取所有子节点
			alert(document.getElementById("city").childNodes.length);//9个,空白字符也加上了
		};

		//6.返回#phone的第一个子节点(查找id=phone的节点的第一个子节点)
		var btn06Ele = document.getElementById("btn06");
		btn06Ele.onclick = function(){
      
      
			// 查询id为phone的节点
			alert( document.getElementById("phone").firstElementChild.innerHTML);
		};

		//7.返回#bj的父节点(查找id=bj的节点的父节点)
		var btn07Ele = document.getElementById("btn07");
		btn07Ele.onclick = function(){
      
      
			//1 查询id为bj的节点
			var bjObj = document.getElementById("bj");
			//2 bj节点获取父节点
			alert( bjObj.parentNode.innerHTML);
		};

		//8.返回#android的前一个兄弟节点
		var btn08Ele = document.getElementById("btn08");
		btn08Ele.onclick = function(){
      
      
			// 获取id为android的节点
			// 通过android节点获取前面兄弟节点
			alert( document.getElementById("android").previousElementSibling.innerHTML);
		};

		//9.读取#username的value属性值(读取id=username的节点的value属性值)
		var btn09Ele = document.getElementById("btn09");
		btn09Ele.onclick = function(){
      
      
			alert(document.getElementById("username").value);
		};

		//10.设置#username的value属性值
		var btn10Ele = document.getElementById("btn10");
		btn10Ele.onclick = function(){
      
      
			document.getElementById("username").value = "国哥你真牛逼";
		};

		//11.返回#bj的文本值
		var btn11Ele = document.getElementById("btn11");
		btn11Ele.onclick = function(){
      
      
			alert(document.getElementById("bj").innerText);
		};

    //12.innerText和innerHTML的区别:
    //innerText:只有文本
    //innerHTML:和html有关的标签文本等都会显示出来
    //如下程序可验证
    var btn11Ele = document.getElementById("btn12");
    btn11Ele.onclick = function(){
      
      
      alert(document.getElementById("city").innerText);
      alert(document.getElementById("city").innerHTML);
    };

	};

</script>
</head>
<body>
<div id="total">
	<div class="inner">
		<p>
			你喜欢哪个城市?
		</p>

		<ul id="city">
			<li id="bj">北京</li>
			<li>上海</li>
			<li>东京</li>
			<li>首尔</li>
		</ul>

		<br>
		<br>

		<p>
			你喜欢哪款单机游戏?
		</p>

		<ul id="game">
			<li id="rl">红警</li>
			<li>实况</li>
			<li>极品飞车</li>
			<li>魔兽</li>
		</ul>

		<br />
		<br />

		<p>
			你手机的操作系统是?
		</p>

		<ul id="phone">
      <li>IOS</li>
      <li id="android">Android</li>
      <li>Windows Phone</li>
    </ul>
	</div>

	<div class="inner">
		gender:
		<input type="radio" name="gender" value="male"/>
		Male
		<input type="radio" name="gender" value="female"/>
		Female
		<br>
		<br>
		name:
		<input type="text" name="name" id="username" value="abcde"/>
	</div>
</div>

<div id="btnList">
	<div><button id="btn01">查找#bj节点</button></div>
	<div><button id="btn02">查找所有li节点</button></div>
	<div><button id="btn03">查找name=gender的所有节点</button></div>
	<div><button id="btn04">查找#city下所有li节点</button></div>
	<div><button id="btn05">返回#city的所有子节点</button></div>
	<div><button id="btn06">返回#phone的第一个子节点</button></div>
	<div><button id="btn07">返回#bj的父节点</button></div>
	<div><button id="btn08">返回#android的前一个兄弟节点</button></div>
	<div><button id="btn09">返回#username的value属性值</button></div>
	<div><button id="btn10">设置#username的value属性值</button></div>
	<div><button id="btn11">返回#bj的文本值</button></div>
	<div><button id="btn12">innerText和innerHTML对比</button></div>
</div>
</body>
//css.css
@CHARSET "UTF-8";

body {
    
    
	width: 800px;
	margin-left: auto;
	margin-right: auto;
}

button {
    
    
	width: 300px;
	margin-bottom: 10px;
}

#btnList {
    
    
	float:left;
}

#total{
    
    
	width: 450px;
	float:left;
}

ul{
    
    
	list-style-type: none;
	margin: 0px;
	padding: 0px;
}

.inner li{
    
    
	border-style: solid;
	border-width: 1px;
	padding: 5px;
	margin: 5px;
	background-color: #99ff99;
	float:left;
}

.inner{
    
    
	width:400px;
	border-style: solid;
	border-width: 1px;
	margin-bottom: 10px;
	padding: 10px;
	float: left;
}

(2)createElement 方法和appendChild( oChildNode )方法示例

<head>

  <script type="text/javascript">

    window.onload = function (){
      
      
      // 现在需要我们使用 js 代码来创建 html 标签,并显示在页面上
      // 标签的内容就是:<div>国哥,我爱你</div>

      // 创建出来的div对象在内存中,该对象里面还没有内容<div></div>
      var divObj = document.createElement("div");
      //为创建出来的标签添加内容,但还在内存中无法在浏览器显示出来
      divObj.innerHTML = "国哥,我爱你";

      //在浏览器中显示出来,即添加到body中,即为body对象添加一个子节点
      //document对象中直接就有一个body属性,不需要再通过标签名得到body对象
      //body在这里还无法执行,因为代码自上而下执行,代码读到这里还不知道body
      //所以放进window.onload里
      document.body.appendChild(divObj);
    }

  </script>
  
</head>

(3)关于文本也可以作为一个节点

<head>

  <script type="text/javascript">
    //文本也可以作为一个节点对象

    window.onload = function (){
      
      
      //创建div标签
      var divObj = document.createElement("div");

      //创建一个文本节点对象
      var textObj = document.createTextNode("国哥,我爱你");

      //将文本节点作为div节点的子节点
      divObj.appendChild(textObj);

      //将div节点作为body的子节点
      document.body.appendChild(divObj);

      //效果同上一个程序
    }

  </script>
  
</head>

四、jQuery

001-jQuery 介绍

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John Resig发布。
jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。
它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。	

什么是 jQuery ?
jQuery,顾名思义,也就是 JavaScript 和查询(Query),它就是辅助 JavaScript 开发的 js 类库。

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

jQuery 流行程度
jQuery 现在已经成为最流行的 JavaScript 库,在世界前 10000 个访问最多的网站中,有超过 55%在使用jQuery。

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

002-jQuery 的初体验

<head>

  <!--需求:使用 jQuery 给一个按钮绑定单击事件-->

  <!--使用jQuery之前要先下载,然后加入到项目下,再引入jQuery-->
  <script type="text/javascript" src="../jquery-3.6.0.js"></script>

  <script type="text/javascript">
      //原先给按钮绑定事件的做法
/*    window.onload = function (){
      var btnObj = document.getElementById("btnId"); //dom对象
      btnObj.onclick = function (){
        alert("js原先的单击事件");
      }
    }*/

      //使用jQuery给一个按钮绑定单击事件
      $(function (){
      
      //表示页面加载完成之后,相当于 window.onload = function(){}
        //查询标签对象
        //表示按id查询标签对象(这是一个jQuery对象,jQuery对象默认在命名时以$开头)
        var $btnObj = $("#btnId");
        //绑定单击事件
        $btnObj.click(function (){
      
      
          alert("jQuery的单击事件");
        })
      });
  </script>

</head>
<body>

  <button id="btnId">SayHello</button>

</body>
常见问题?
1、使用 jQuery 一定要引入 jQuery 库吗? 
答案: 是,必须

2、jQuery 中的$到底是什么? 
答案: 它是一个函数

3、怎么为按钮添加点击响应函数的? 
答案:
	1、使用 jQuery 查询到标签对象
	2、使用标签对象.click( function(){} );

003-jQuery 核心函数

$ 是 jQuery 的核心函数,能完成 jQuery 的很多功能。

$(参数) 就是调用$这个函数

1、传入参数为 [ 函数 ] 时:
表示页面加载完成之后。相当于 window.onload = function(){}

2、传入参数为 [ HTML 字符串 ] 时:
会为我们创建这个 html 标签对象

3、传入参数为 [ 选择器字符串 ] 时:
$(“#id 属性值”); id 选择器,根据 id 查询标签对象
$(“标签名”); 标签名选择器,根据指定的标签名查询标签对象
$(“.class属性值”); 类型选择器,可以根据 class 属性查询标签对象

4、传入参数为 [ DOM 对象 ] 时:
会把这个 dom 对象转换为 jQuery 对象
<head>

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

  <script type="text/javascript">

    //核心函数的4个作用
    //传入参数为[函数]时:在页面加载完成后执行这个函数,相当于window.onload = function(){}
    $(function (){
      
      
      alert("页面加载完成之后,自动调用");
    });


    //传入参数为[HTML字符串]时:根据这个字符串创建html标签对象
    $(function (){
      
      
      $("  <div>\n" +
        "    <span>div-span1</span>\n" +
        "  </div>").appendTo("body");//创建div和span标签再加上文字到body中(直接在body中先写然后复制到这里)
    });


    //传入参数为[选择器字符串]时:根据这个字符串查找元素节点对象(标签对象)
    //$(“#id 属性值”); id 选择器,根据 id 查询标签对象
    //$(“标签名”); 标签名选择器,根据指定的标签名查询标签对象
    //$(“.class 属性值”); 类型选择器,可以根据 class 属性查询标签对象
    $(function (){
      
      
      alert($("button").length);//3
    });


    //传入参数为[DOM对象]时:将DOM对象包装为jQuery对象返回
    $(function (){
      
      
      var btn01Obj = document.getElementById("btn01");//dom对象
      alert(btn01Obj);//[object HTMLButtonElement]
      alert($(btn01Obj));//jQuery对象 [object Object]
    });


  </script>

</head>
<body>

  <button id="btn01">按钮1</button>
  <button>按钮2</button>
  <button>按钮3</button>

</body>

004-jQuery 对象和 dom 对象区分

(1)什么是 jQuery 对象,什么是 dom对象

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

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

jQuery 对象
5.通过 JQuery 提供的 API 创建的对象,是 JQuery 对象
6.通过 JQuery 包装的 Dom 对象,也是 JQuery 对象
7.通过 JQuery 提供的 API 查询到的对象,是 JQuery 对象

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

API应用程序接口,一些预定义的函数
<head>

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

  <script type="text/javascript">

    $(function (){
      
      
      //通过 JQuery 提供的 API 创建的对象,是 JQuery 对象
      alert($("<h1></h1>"));//jQuery对象 [object Object]

      //通过 JQuery 包装的 Dom 对象,也是 JQuery 对象
      var btn01Obj = document.getElementById("btn01");//dom对象
      alert(btn01Obj);//dom对象 [object HTMLButtonElement]
      alert($(btn01Obj));//jQuery对象 [object Object]

      //通过 JQuery 提供的 API 查询到的对象,是 JQuery 对象
      alert($("#btn01"));//jQuery对象 [object Object]
    });
    
  </script>
</head>
<body>
  <button id="btn01">按钮1</button>
</body>

(2)问题:jQuery 对象的本质是什么?

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

(3)jQuery 对象和 Dom 对象使用区别

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

(4)Dom 对象和 jQuery 对象互转

1、dom 对象转化为 jQuery 对象(*重点)
	1、先有 DOM 对象
	2、$( DOM 对象 ) --->就可以转换成为 jQuery 对象

2、jQuery 对象转为 dom 对象(*重点)
	1、先有 jQuery 对象
	2、jQuery 对象[下标]--->取出相应的 DOM 对象 (因为jQuery对象本质是dom对象数组)
<head>

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

    $(function(){
      
      
      //dom对象转换为jQuery对象
      var divObj = document.getElementById("testDiv");
      alert(divObj);//dom对象
      alert($(divObj));//jQuery对象

      //jQuery对象转换为dom对象
      var $btnObjs = $("button");//jQuery对象,该对象是一个数组,数组里面都是dom对象
      for (var i = 0; i < $btnObjs.length; i++) {
      
      
        alert($btnObjs[i]);
      }
      
    });

  </script>

</head>
<body>

  <div id="testDiv">A is Very Good!</div>

  <button id="btn01">btn01</button>
  <button id="btn02">btn02</button>
  <button id="btn03">btn03</button>
  <button id="btn04">btn04</button>

</body>

在这里插入图片描述

005-选择器

通过选择器来获取相应的jQuery对象(dom对象标签+函数)

看文档jQueryAPI_1.7.1_CN.chm

(1)基本选择器

1)id选择器:
	#id
	通过id来匹配标签

在这里插入图片描述

2)标签选择器:
	通过标签名来匹配标签

在这里插入图片描述

3)类选择器:
	.class名
	通过类名来匹配标签

在这里插入图片描述

4)* 选择器:
	得到所有标签

在这里插入图片描述

5)组合选择器:
	selector1,selector2,selectorN
	上面几个选择器的综合使用

	下面示例中的p.myClass --->标签名是p且类名是myClass的标签
	结果与jQuery顺序不同?
		根据页面的顺序(即HTML代码中的顺序)

在这里插入图片描述

练习选择器的使用
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>

		<style type="text/css">
			div, span, p {
      
      
			    width: 140px;
			    height: 140px;
			    margin: 5px;
			    background: #aaa;
			    border: #000 1px solid;
			    float: left;
			    font-size: 17px;
			    font-family: Verdana;
			}

			div.mini {
      
      
			    width: 55px;
			    height: 55px;
			    background-color: #aaa;
			    font-size: 12px;
			}

			div.hide {
      
      
			    display: none;
			}
		</style>

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

        $(function (){
      
      
          //1.选择 id 为 one 的元素 设置"background-color","#bbffaa" (id选择器)
          //绑定点击事件
          $("#btn1").click(function (){
      
      
            
            //jQuery对象的css(name,value)方法可以设置和获取样式
            
            $("#one").css("background-color","#bbffaa");
          });

          //2.选择 class 为 mini 的所有元素,设置"background-color","#bbffaa" (类选择器)
          //绑定点击事件
          $("#btn2").click(function (){
      
      
            $(".mini").css("background-color","#bbffaa");
          });

          //3.选择 元素名是 div 的所有元素 (标签名选择器)
          //绑定点击事件
          $("#btn3").click(function (){
      
      
            $("div").css("background-color","#bbffaa");
          });

          //4.选择所有的元素 (* 选择器)
          $("#btn4").click(function (){
      
      
            $("*").css("background-color","#bbffaa");
          });

          //5.选择所有的 span 元素和id为two的元素 (组合选择器)
          $("#btn5").click(function (){
      
      
            $("span,#two").css("background-color","#bbffaa");
          });

        });

		</script>
	</head>
	<body>

		<input type="button" value="选择 id 为 one 的元素" id="btn1" />
		<input type="button" value="选择 class 为 mini 的所有元素" id="btn2" />
		<input type="button" value="选择 元素名是 div 的所有元素" id="btn3" />
		<input type="button" value="选择 所有的元素" id="btn4" />
		<input type="button" value="选择 所有的 span 元素和id为two的元素" id="btn5" />

		<br>
		<div class="one" id="one">
			id 为 one,class 为 one 的div
			<div class="mini">class为mini</div>
		</div>

		<div class="one" id="two" title="test">
			id为two,class为one,title为test的div
			<div class="mini" title="other">class为mini,title为other</div>
			<div class="mini" title="test">class为mini,title为test</div>
		</div>

		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini"></div>
		</div>

		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini" title="tesst">class为mini,title为tesst</div>
		</div>

		<div style="display:none;" class="none">style的display为"none"的div</div>

    <div class="hide">class为"hide"的div</div>

		<div>
			包含input的type为"hidden"的div<input type="hidden" size="8">
		</div>

		<span class="one" id="span">^^span元素^^</span>
	</body>
</html>


(2)层级选择器

1)祖先后代选择器:在给定的祖先标签下匹配所有的后代标签
	语法:ancestor descendant
	
	找到祖先ancester标签的所有后代descendant标签
	即ancester标签的儿子标签,孙子标签等等

在这里插入图片描述

2)子元素(标签)选择器:在给定的父元素下匹配所有的子元素
	语法:parent > child
	找parent标签下的所有child子标签
	只找子标签,孙子标签往后的不找

在这里插入图片描述

3)相邻元素选择器:匹配所有紧接在 prev 元素后的 next 元素
	语法:prev + next 

在这里插入图片描述

4)兄弟元素选择器:匹配 prev 元素之后的所有 siblings 元素
	语法:prev ~ sibings 
	找到所有在pre标签之后的且与pre标签同辈的标签

在这里插入图片描述

练习
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<style type="text/css">
			div, span, p {
      
      
			    width: 140px;
			    height: 140px;
			    margin: 5px;
			    background: #aaa;
			    border: #000 1px solid;
			    float: left;
			    font-size: 17px;
			    font-family: Verdana;
			}

			div.mini {
      
      
			    width: 55px;
			    height: 55px;
			    background-color: #aaa;
			    font-size: 12px;
			}

			div.hide {
      
      
			    display: none;
			}
		</style>

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

			$(document).ready(function(){
      
      //这个是 $(function(){});的全写形式

				//1.选择 body 内的所有 div 元素
				$("#btn1").click(function(){
      
      
					$("body div").css("background", "#bbffaa");
				});

				//2.在 body 内, 选择div子元素
				$("#btn2").click(function(){
      
      
					$("body > div").css("background", "#bbffaa");
				});

				//3.选择 id 为 one 的下一个 div 元素
				$("#btn3").click(function(){
      
      
					$("#one + div").css("background", "#bbffaa");
				});

				//4.选择 id 为 two 的元素后面的所有 div 兄弟元素
				$("#btn4").click(function(){
      
      
					$("#two ~ div").css("background", "#bbffaa");
				});

			});

		</script>
	</head>
	<body>

		<input type="button" value="选择 body 内的所有 div 元素" id="btn1" />
		<input type="button" value="在 body 内, 选择div子元素" id="btn2" />
		<input type="button" value="选择 id 为 one 的下一个 div 元素" id="btn3" />
		<input type="button" value="选择 id 为 two 的元素后面的所有 div 兄弟元素" id="btn4" />
		<br><br>
		<div class="one" id="one">
			id 为 one,class 为 one 的div
			<div class="mini">class为mini</div>
		</div>
		<div class="one" id="two" title="test">
			id为two,class为one,title为test的div
			<div class="mini" title="other">class为mini,title为other</div>
			<div class="mini" title="test">class为mini,title为test</div>
		</div>
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini"></div>
		</div>
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini" title="tesst">class为mini,title为tesst</div>
		</div>
		<div style="display:none;" class="none">style的display为"none"的div</div>
		<div class="hide">class为"hide"的div</div>
		<div>
			包含input的type为"hidden"的div<input type="hidden" size="8">
		</div>
		<span id="span">^^span元素^^</span>
	</body>
</html>


(3)过滤选择器

具体方法看文档

在这里插入图片描述

元素就是标签

1)基本过滤选择器
	:first 获取第一个元素
	:last 获取最后个元素
	:not(selector) 去除所有与给定选择器匹配的元素
	:even 匹配所有索引值为偶数的元素,从 0 开始计数
	:odd 匹配所有索引值为奇数的元素,从 0 开始计数
	:eq(index) 匹配一个给定索引值的元素
	:gt(index) 匹配所有大于给定索引值的元素
	:lt(index) 匹配所有小于给定索引值的元素
	:header 匹配如 h1, h2, h3 之类的标题元素
	:animated 匹配所有正在执行动画效果的元素

练习:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<style type="text/css">
			div, span, p {
      
      
			    width: 140px;
			    height: 140px;
			    margin: 5px;
			    background: #aaa;
			    border: #000 1px solid;
			    float: left;
			    font-size: 17px;
			    font-family: Verdana;
			}

			div.mini {
      
      
			    width: 55px;
			    height: 55px;
			    background-color: #aaa;
			    font-size: 12px;
			}

			div.hide {
      
      
			    display: none;
			}
		</style>
		<script type="text/javascript" src="../jquery-3.6.0.js"></script>
		<script type="text/javascript">

      //动画
			$(document).ready(function(){
      
      
				function anmateIt(){
      
      
					$("#mover").slideToggle("slow", anmateIt);
				}
				anmateIt();
			});

			$(document).ready(function(){
      
      
				//1.选择第一个 div 元素
				$("#btn1").click(function(){
      
      
					$("div:first").css("background", "#bbffaa");
				});

				//2.选择最后一个 div 元素
				$("#btn2").click(function(){
      
      
					$("div:last").css("background", "#bbffaa");
				});

				//3.选择class不为 one 的所有 div 元素
				$("#btn3").click(function(){
      
      
					$("div:not(.one)").css("background", "#bbffaa");
				});

				//4.选择索引值为偶数的 div 元素
				$("#btn4").click(function(){
      
      
					$("div:even").css("background", "#bbffaa");
				});

				//5.选择索引值为奇数的 div 元素
				$("#btn5").click(function(){
      
      
					$("div:odd").css("background", "#bbffaa");
				});

				//6.选择索引值为大于 3 的 div 元素
				$("#btn6").click(function(){
      
      
					$("div:gt(3)").css("background", "#bbffaa");
				});

				//7.选择索引值为等于 3 的 div 元素
				$("#btn7").click(function(){
      
      
					$("div:eq(3)").css("background", "#bbffaa");
				});

				//8.选择索引值为小于 3 的 div 元素
				$("#btn8").click(function(){
      
      
					$("div:lt(3)").css("background", "#bbffaa");
				});

				//9.选择所有的标题元素,给页面内所有标题加上背景色
				$("#btn9").click(function(){
      
      
					$(":header").css("background", "#bbffaa");
				});

				//10.选择当前正在执行动画的所有元素, 加上背景色
				$("#btn10").click(function(){
      
      
					$(":animated").css("background", "#bbffaa");
				});

			    //11.选择没有执行动画的最后一个div, 加上背景色 (多个功能共同使用)
        		$("#btn11").click(function(){
      
      
          			$("div:not(:animated):last").css("background", "#bbffaa");
        		});
        		
			});
		</script>
	</head>
	<body>

		<input type="button" value="选择第一个 div 元素" id="btn1" />
		<input type="button" value="选择最后一个 div 元素" id="btn2" />
		<input type="button" value="选择class不为 one 的所有 div 元素" id="btn3" />
		<input type="button" value="选择索引值为偶数的 div 元素" id="btn4" />
		<input type="button" value="选择索引值为奇数的 div 元素" id="btn5" />
		<input type="button" value="选择索引值为大于 3 的 div 元素" id="btn6" />
		<input type="button" value="选择索引值为等于 3 的 div 元素" id="btn7" />
		<input type="button" value="选择索引值为小于 3 的 div 元素" id="btn8" />
		<input type="button" value="选择所有的标题元素" id="btn9" />
		<input type="button" value="选择当前正在执行动画的所有元素" id="btn10" />
		<input type="button" value="选择没有执行动画的最后一个div" id="btn11" />

		<h3>基本选择器.</h3>
		<br><br>
		<div class="one" id="one">
			id 为 one,class 为 one 的div
			<div class="mini">class为mini</div>
		</div>
		<div class="one" id="two" title="test">
			id为two,class为one,title为test的div
			<div class="mini" title="other">class为mini,title为other</div>
			<div class="mini" title="test">class为mini,title为test</div>
		</div>
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini"></div>
		</div>
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini" title="tesst">class为mini,title为tesst</div>
		</div>
		<div style="display:none;" class="none">style的display为"none"的div</div>
		<div class="hide">class为"hide"的div</div>
		<div>
			包含input的type为"hidden"的div<input type="hidden" size="8">
		</div>
		<div id="mover">正在执行动画的div元素.</div>
	</body>
</html>


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

在这里插入图片描述

-----

在这里插入图片描述

-----

在这里插入图片描述

-----

在这里插入图片描述

练习:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<style type="text/css">
			div, span, p {
      
      
			    width: 140px;
			    height: 140px;
			    margin: 5px;
			    background: #aaa;
			    border: #000 1px solid;
			    float: left;
			    font-size: 17px;
			    font-family: Verdana;
			}

			div.mini {
      
      
			    width: 55px;
			    height: 55px;
			    background-color: #aaa;
			    font-size: 12px;
			}

			div.hide {
      
      
			    display: none;
			}
		</style>
		<script type="text/javascript" src="../jquery-3.6.0.js"></script>
		<script type="text/javascript">

			$(document).ready(function(){
      
      
				function anmateIt(){
      
      
					$("#mover").slideToggle("slow", anmateIt);
				}

				anmateIt();
			});

			/**
			:contains(text)
			:empty
			:has(selector)
			:parent
			*/
			$(document).ready(function(){
      
      
				//1.选择 含有文本 'di' 的 div 元素
				$("#btn1").click(function(){
      
      
					$("div:contains(di)").css("background", "#bbffaa");
				});

				//2.选择不包含子元素(或者文本元素) 的 div 空元素
				$("#btn2").click(function(){
      
      
					$("div:empty").css("background", "#bbffaa");
				});

				//3.选择含有 class 为 mini 元素的 div 元素
				$("#btn3").click(function(){
      
      
					$("div:has(.mini)").css("background", "#bbffaa");
				});

				//4.选择含有子元素(或者文本元素)的div元素
				$("#btn4").click(function(){
      
      
					$("div:parent").css("background", "#bbffaa");
				});
			});
		</script>
	</head>
	<body>
		<input type="button" value="选择 含有文本 'di' 的 div 元素" id="btn1" />
		<input type="button" value="选择不包含子元素(或者文本元素) 的 div 空元素" id="btn2" />
		<input type="button" value="选择含有 class 为 mini 元素的 div 元素" id="btn3" />
		<input type="button" value="选择含有子元素(或者文本元素)的div元素" id="btn4" />

		<br><br>
		<div class="one" id="one">
			id 为 one,class 为 one 的div
			<div class="mini">class为mini</div>
		</div>
		<div class="one" id="two" title="test">
			id为two,class为one,title为test的div
			<div class="mini" title="other">class为mini,title为other</div>
			<div class="mini" title="test">class为mini,title为test</div>
		</div>
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini"></div>
		</div>
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini" title="tesst">class为mini,title为tesst</div>
		</div>
		<div style="display:none;" class="none">style的display为"none"的div</div>
		<div class="hide">class为"hide"的div</div>
		<div>
			包含input的type为"hidden"的div<input type="hidden" size="8">
		</div>
		<div id="mover">正在执行动画的div元素.</div>
	</body>
</html>


3)可见性过滤选择器	
:hidden  匹配所有不可见元素或者type为hidden的元素
:visible 匹配所有可见元素

在这里插入图片描述

---

在这里插入图片描述

练习:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<style type="text/css">
			div, span, p {
      
      
			    width: 140px;
			    height: 140px;
			    margin: 5px;
			    background: #aaa;
			    border: #000 1px solid;
			    float: left;
			    font-size: 17px;
			    font-family: Verdana;
			}

			div.mini {
      
      
			    width: 55px;
			    height: 55px;
			    background-color: #aaa;
			    font-size: 12px;
			}

			div.hide {
      
      
			    display: none;
			}
		</style>
		<script type="text/javascript" src="../jquery-3.6.0.js"></script>
		<script type="text/javascript">
			$(document).ready(function(){
      
      
				function anmateIt(){
      
      
					$("#mover").slideToggle("slow", anmateIt);
				}

				anmateIt();
			});
			/**
				:hidden
				:visible
			*/
			$(document).ready(function(){
      
      
				//1.选取所有可见的  div 元素
				$("#btn1").click(function(){
      
      
					$("div:visible").css("background", "#bbffaa");
				});

				//2.选择所有不可见的 div 元素
				//不可见:display属性设置为none,或visible设置为hidden
				$("#btn2").click(function(){
      
      
					$("div:hidden").show("slow").css("background", "#bbffaa");
				});

				//3.选择所有不可见的 input 元素
				$("#btn3").click(function(){
      
      
					alert($("input:hidden").attr("value"));
				});
			});
		</script>
	</head>
	<body>
		<input type="button" value="选取所有可见的  div 元素" id="btn1">
		<input type="button" value="选择所有不可见的 div 元素" id="btn2" />
		<input type="button" value="选择所有不可见的 input 元素" id="btn3" />

		<br>
		<div class="one" id="one">
			id 为 one,class 为 one 的div
			<div class="mini">class为mini</div>
		</div>
		<div class="one" id="two" title="test">
			id为two,class为one,title为test的div
			<div class="mini" title="other">class为mini,title为other</div>
			<div class="mini" title="test">class为mini,title为test</div>
		</div>
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini"></div>
		</div>
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini" title="tesst">class为mini,title为tesst</div>
		</div>
		<div style="display:none;" class="none">style的display为"none"的div</div>
		<div class="hide">class为"hide"的div</div>
		<div>
			包含input的type为"hidden"的div<input type="hidden" value="123456789" size="8">
		</div>
		<div id="mover">正在执行动画的div元素.</div>
	</body>
</html>


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

练习:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title>
<style type="text/css">
div,span,p {
      
      
	width: 140px;
	height: 140px;
	margin: 5px;
	background: #aaa;
	border: #000 1px solid;
	float: left;
	font-size: 17px;
	font-family: Verdana;
}

div.mini {
      
      
	width: 55px;
	height: 55px;
	background-color: #aaa;
	font-size: 12px;
}

div.hide {
      
      
	display: none;
}
</style>
<script type="text/javascript" src="../jquery-3.6.0.js"></script>
<script type="text/javascript">
	/**
[attribute]
[attribute=value]
[attribute!=value]
[attribute^=value]
[attribute$=value]
[attribute*=value]
[attrSel1][attrSel2][attrSelN]


	*/
	$(function() {
      
      
		//1.选取含有 属性title 的div元素
		$("#btn1").click(function() {
      
      
			$("div[title]").css("background", "#bbffaa");
		});
		//2.选取 属性title值等于'test'的div元素
		$("#btn2").click(function() {
      
      
			$("div[title='test']").css("background", "#bbffaa");
		});
		//3.选取 属性title值不等于'test'的div元素(*没有属性title的也将被选中)
		$("#btn3").click(function() {
      
      
			$("div[title!='test']").css("background", "#bbffaa");
		});
		//4.选取 属性title值 以'te'开始 的div元素
		$("#btn4").click(function() {
      
      
			$("div[title^='te']").css("background", "#bbffaa");
		});
		//5.选取 属性title值 以'est'结束 的div元素
		$("#btn5").click(function() {
      
      
			$("div[title$='est']").css("background", "#bbffaa");
		});
		//6.选取 属性title值 含有'es'的div元素
		$("#btn6").click(function() {
      
      
			$("div[title*='est']").css("background", "#bbffaa");
		});

		//7.首先选取有属性id的div元素,然后在结果中 选取属性title值 含有'es'的 div 元素
		$("#btn7").click(function() {
      
      
			$("div[id][title*='es']").css("background", "#bbffaa");
		});
		//8.选取 含有 title 属性值, 且title 属性值不等于 test 的 div 元素
		$("#btn8").click(function() {
      
      
			$("div[title][title!='test']").css("background", "#bbffaa");
		});
	});
</script>
</head>
<body>
	<input type="button" value="选取含有 属性title 的div元素." id="btn1" />
	<input type="button" value="选取 属性title值等于'test'的div元素." id="btn2" />
	<input type="button"
		value="选取 属性title值不等于'test'的div元素(没有属性title的也将被选中)." id="btn3" />
	<input type="button" value="选取 属性title值 以'te'开始 的div元素." id="btn4" />
	<input type="button" value="选取 属性title值 以'est'结束 的div元素." id="btn5" />
	<input type="button" value="选取 属性title值 含有'es'的div元素." id="btn6" />
	<input type="button"
		value="组合属性选择器,首先选取有属性id的div元素,然后在结果中 选取属性title值 含有'es'的 div 元素."
		id="btn7" />
	<input type="button"
		value="选取 含有 title 属性值, 且title 属性值不等于 test 的 div 元素." id="btn8" />

	<br>
	<br>
	<div class="one" id="one">
		id 为 one,class 为 one 的div
		<div class="mini">class为mini</div>
	</div>
	<div class="one" id="two" title="test">
		id为two,class为one,title为test的div
		<div class="mini" title="other">class为mini,title为other</div>
		<div class="mini" title="test">class为mini,title为test</div>
	</div>
	<div class="one">
		<div class="mini">class为mini</div>
		<div class="mini">class为mini</div>
		<div class="mini">class为mini</div>
		<div class="mini"></div>
	</div>
	<div class="one">
		<div class="mini">class为mini</div>
		<div class="mini">class为mini</div>
		<div class="mini">class为mini</div>
		<div class="mini" title="tesst">class为mini,title为tesst</div>
	</div>
	<div style="display: none;" class="none">style的display为"none"的div</div>
	<div class="hide">class为"hide"的div</div>
	<div>
		包含input的type为"hidden"的div<input type="hidden" value="123456789"
			size="8">
	</div>
	<div id="mover">正在执行动画的div元素.</div>
</body>
</html>


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

6)表单对象属性过滤选择器
	:enabled 匹配所有可用元素
	:disabled 匹配所有不可用元素
	:checked 匹配所有选中的被选中元素(复选框、单选框等,不包括select中的option)
	:selected 匹配所有选中的 option

练习:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<script type="text/javascript" src="../jquery-3.6.0.js"></script>
		<script type="text/javascript">
			$(function(){
      
      


		/**
		:input
		:text
		:password
		:radio
		:checkbox
		:submit
		:image
		:reset
		:button
		:file
		:hidden

		表单对象的属性
		:enabled
		:disabled
		:checked
		:selected
		*/


				//1.对表单内 可用的input(text) 进行赋值操作
				$("#btn1").click(function(){
      
      
		          //val()可以操作表单项的value属性值
 		          //它可以设置和获取
				  $(":text:enabled").val("New Value");
				});

				//2.对表单内 不可用的input(text) 进行赋值操作
				$("#btn2").click(function(){
      
      
					$(":text:disabled").val("New Value Too");
				});

				//3.获取复选框 选中的元素的个数
				$("#btn3").click(function(){
      
      
					alert($(":checkbox:checked").length);
				});

				//4.获取多选框,每个选中的元素的value值
				$("#btn4").click(function(){
      
      
		          //获取选中的复选框标签对象
		          var $checkboies = $(":checkbox:checked");
		
		          //老式遍历方法
		          for (var i = 0; i < $checkboies.length; i++) {
      
      
		            //$checkboies[i]--->dom对象
		            alert($checkboies[i].value);
		          }
		
		          //新的遍历方法
		
		          //each方法是jQuery对象提供用来遍历的方法
		          $checkboies.each(function (){
      
      
		            //在遍历的function函数种,有一个this对象,就是当前遍历到的dom对象
		            alert(this.value);
		          });

				});

				//5.获取下拉框中选中的内容
				$("#btn5").click(function(){
      
      
		          //获取选中的option标签对象
		          //层次选择器+对象属性过滤选择器
		          var $option = $("select option:selected");
		          //遍历获取option标签中的文本内容
		          $option.each(function (){
      
      
		            alert(this.innerHTML);
		          });

				});

			})
		</script>
	</head>
	<body>
		<h3>表单对象属性过滤选择器</h3>
		 <button id="btn1">对表单内 可用input 赋值操作.</button>
  		 <button id="btn2">对表单内 不可用input 赋值操作.</button><br /><br />
		 <button id="btn3">获取多选框选中的个数.</button>
		 <button id="btn4">获取多选框选中的内容.</button><br /><br />
         <button id="btn5">获取下拉框选中的内容.</button><br /><br />

		<form id="form1" action="#">
			可用元素: <input name="add" value="可用文本框1"/><br>
			不可用元素: <input name="email" disabled="disabled" value="不可用文本框"/><br>
			可用元素: <input name="che" value="可用文本框2"/><br>
			不可用元素: <input name="name" disabled="disabled" value="不可用文本框"/><br>
			<br>

			多选框: <br>
			<input type="checkbox" name="newsletter" checked="checked" value="test1" />test1
			<input type="checkbox" name="newsletter" value="test2" />test2
			<input type="checkbox" name="newsletter" value="test3" />test3
			<input type="checkbox" name="newsletter" checked="checked" value="test4" />test4
			<input type="checkbox" name="newsletter" value="test5" />test5

			<br><br>
			下拉列表1: <br>
			<select name="test" multiple="multiple" style="height: 100px" id="sele1">
				<option>浙江</option>
				<option selected="selected">辽宁</option>
				<option>北京</option>
				<option selected="selected">天津</option>
				<option>广州</option>
				<option>湖北</option>
			</select>

			<br><br>
			下拉列表2: <br>
			<select name="test2">
				<option>浙江</option>
				<option>辽宁</option>
				<option selected="selected">北京</option>
				<option>天津</option>
				<option>广州</option>
				<option>湖北</option>
			</select>
		</form>
	</body>
</html>


006-jQuery 元素筛选

通过jQuery对象的方法获得相应的jQuery元素对象

在这里插入图片描述

eq() 			获取给定索引的元素 		功能跟 :eq() 一样
first() 		获取第一个元素 			功能跟 :first 一样
last() 			获取最后一个元素 			功能跟 :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() 		返回当前元素前面所有的兄弟元素
prevUntil(exp) 	查找当前元素之前所有的同辈元素,直到遇到匹配的那个元素为止。
siblings(exp) 	返回所有兄弟元素

add() 			把与表达式匹配的元素添加到jQuery对象中。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>DOM查询</title>
		<style type="text/css">
			div, span, p {
      
      
			    width: 140px;
			    height: 140px;
			    margin: 5px;
			    background: #aaa;
			    border: #000 1px solid;
			    float: left;
			    font-size: 17px;
			    font-family: Verdana;
			}

			div.mini {
      
      
			    width: 55px;
			    height: 55px;
			    background-color: #aaa;
			    font-size: 12px;
			}

			div.hide {
      
      
			    display: none;
			}
		</style>
		<script type="text/javascript" src="../jquery-3.6.0.js"></script>
		<script type="text/javascript">
			$(document).ready(function(){
      
      
				function anmateIt(){
      
      
					$("#mover").slideToggle("slow", anmateIt);
				}
				anmateIt();

	/**

	过滤
	eq(index|-index)
	first()
	last()
	hasClass(class)
	filter(expr|obj|ele|fn)
	is(expr|obj|ele|fn)1.6*
	has(expr|ele)
	not(expr|ele|fn)
	slice(start,[end])

	查找
	children([expr])
	closest(expr,[con]|obj|ele)1.6*
	find(expr|obj|ele)
	next([expr])
	nextall([expr])
	nextUntil([exp|ele][,fil])1.6*
	parent([expr])
	parents([expr])
	parentsUntil([exp|ele][,fil])1.6*
	prev([expr])
	prevall([expr])
	prevUntil([exp|ele][,fil])1.6*
	siblings([expr])

	串联
	add(expr|ele|html|obj[,con])


	*/

				//(1)eq()  选择索引值为等于 3 的 div 元素
				$("#btn1").click(function(){
      
      
					$("div").eq(3).css("background-color","#bfa");
				});

				//(2)first()选择第一个 div 元素
				 $("#btn2").click(function(){
      
      
					 //first()   选取第一个元素
					$("div").first().css("background-color","#bfa");
				});

				//(3)last()选择最后一个 div 元素
				$("#btn3").click(function(){
      
      
					//last()  选取最后一个元素
					$("div").last().css("background-color","#bfa");
				});

				//(4)filter()在div中选择索引为偶数的
				$("#btn4").click(function(){
      
      
					//filter()  过滤   传入的是选择器字符串
					$("div").filter(":even").css("background-color","#bfa");
				});

				 //(5)is()判断#one是否为空
				//is用来检测jq对象是否符合指定的选择器
				$("#btn5").click(function(){
      
      
          alert($("#one").is(":empty"));
				});

				//(6)has()选择div中包含.mini的
				$("#btn6").click(function(){
      
      
					//has(selector)  选择器字符串    是否包含selector
					$("div").has(".mini").css("background-color","#bfa");
				});

				//(7)not()选择div中class不为one的
				$("#btn7").click(function(){
      
      
					//not(selector)  选择不是selector的元素
					$("div").not(".one").css("background-color","#bfa");
				});

				//(8)children()在body中选择所有class为one的div子元素
				$("#btn8").click(function(){
      
      
					//children()  选出所有的子元素
					$("body").children("div[class='one']").css("background-color","#bfa");
				});


				//(9)find()在body中选择所有class为mini的div元素
				$("#btn9").click(function(){
      
      
					//find()  选出所有的后代元素
					$("body").find("div[class='mini']").css("background-color","#bfa");
				});

				//(10)#one的下一个div
				$("#btn10").click(function(){
      
      
					//next()  选择下一个兄弟元素
					$("#one").next("div").css("background-color","#bfa");
				});

				//(11)nextAll() #one后面所有的span元素
				$("#btn11").click(function(){
      
      
					//nextAll()   选出后面所有的元素
					$("#one").nextAll("span").css("background-color","#bfa");
				});

				//(12)nextUntil() #one和span之间的元素
				$("#btn12").click(function(){
      
      
					//
					$("#one").nextUntil("span").css("background-color","#bfa")
				});

				//(13)parent() .mini的父元素
				$("#btn13").click(function(){
      
      
					$(".mini").parent().css("background-color","#bfa");
				});

				//(14)prev() #two的上一个div
				$("#btn14").click(function(){
      
      
					//prev()
					$("#two").prev("div").css("background-color","#bfa")
				});

				//(15)prevAll() span前面所有的div
				$("#btn15").click(function(){
      
      
					//prevAll()   选出前面所有的元素
					$("span").prevAll("div").css("background-color","#bfa")
				});

				//(16)prevUntil() span向前直到#one的元素
				$("#btn16").click(function(){
      
      
					//prevUntil(exp)   找到之前所有的兄弟元素直到找到exp停止
					$("span").prevUntil("#one").css("background-color","#bfa")
				});

				//(17)siblings() #two的所有兄弟元素
				$("#btn17").click(function(){
      
      
					//siblings()    找到所有的兄弟元素,包括前面的和后面的
					$("#two").siblings().css("background-color","#bfa")
				});

				//(18)add() 选择所有的 span 元素和id为two的元素
				$("#btn18").click(function(){
      
      
					$("span").add("#two").css("background-color","#bfa");
				});

			});

		</script>
	</head>
	<body>
		<input type="button" value="eq()选择索引值为等于 3 的 div 元素" id="btn1" />
		<input type="button" value="first()选择第一个 div 元素" id="btn2" />
		<input type="button" value="last()选择最后一个 div 元素" id="btn3" />
		<input type="button" value="filter()在div中选择索引为偶数的" id="btn4" />
		<input type="button" value="is()判断#one是否为:empty或:parent" id="btn5" />
		<input type="button" value="has()选择div中包含.mini的" id="btn6" />
		<input type="button" value="not()选择div中class不为one的" id="btn7" />
		<input type="button" value="children()在body中选择所有class为one的div子元素" id="btn8" />
		<input type="button" value="find()在body中选择所有class为mini的div后代元素" id="btn9" />
		<input type="button" value="next()#one的下一个div" id="btn10" />
		<input type="button" value="nextAll()#one后面所有的span元素" id="btn11" />
		<input type="button" value="nextUntil()#one和span之间的元素" id="btn12" />
		<input type="button" value="parent().mini的父元素" id="btn13" />
		<input type="button" value="prev()#two的上一个div" id="btn14" />
		<input type="button" value="prevAll()span前面所有的div" id="btn15" />
		<input type="button" value="prevUntil()span向前直到#one的元素" id="btn16" />
		<input type="button" value="siblings()#two的所有兄弟元素" id="btn17" />
		<input type="button" value="add()选择所有的 span 元素和id为two的元素" id="btn18" />


		<br /><br />
		文本框<input type="text" name="account" disabled="disabled" />
		<br><br>
		<div class="one" id="one">
			id 为 one,class 为 one 的div
			<div class="mini">class为mini</div>
		</div>
		<div class="one" id="two" title="test">
			id为two,class为one,title为test的div
			<div class="mini" title="other"><b>class为mini,title为other</b></div>
			<div class="mini" title="test">class为mini,title为test</div>
		</div>

		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini"></div>
		</div>
		<div class="one">
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini">class为mini</div>
			<div class="mini" title="tesst">class为mini,title为tesst</div>
		</div>
		<div style="display:none;" class="none">style的display为"none"的div</div>
		<div class="hide">class为"hide"的div</div>
		<span id="span1">^^span元素 111^^</span>
		<div>
			包含input的type为"hidden"的div<input type="hidden" size="8">
		</div>
		<span id="span2">^^span元素 222^^</span>
		<div id="mover">正在执行动画的div元素.</div>
	</body>
</html>


猜你喜欢

转载自blog.csdn.net/m0_52041525/article/details/123230406