Javaweb笔记

HTML

HTML网页常用基础知识

网页结构

JavaSE C/S Client server 客户端–服务器

JavaWeb B/S Broswer Server 浏览器–服务器

网页的组成部分:

内容(结构)、表现、行为

HTML: Hyper Text Markup Language(超文本标记语言)

ALT+F2 选择浏览器

HTML书写规范:

表示整个 html 页面的开始

头信息

标题

标题

body 是页面的主体内容

页面主体内容

表示整个 html 页面的结束

HTML注释 :

HTML做注释快捷键:ctrl+shift+/

ctrl+d 复制粘贴当前行

标签的格式:

<标签名>封装的数据</标签名>

标签拥有自己的属性

​ 1、基本属性 : bgcolor=“red” 可以修改简单的样式效果 可以修改简单的样式

​ 2、事件属性 : οnclick=“alert(‘你好!’);” 可以直接设置事件响应后的代码

button : 按钮

标签:单标签,双标签

​ 1、单表签格式:<标签名/> br 换行 hr 水平线

​ 2、双标签格式:<标签名> …封装的数据… </标签名>

3、属性必须有值,属性值必须加引号

HTML中常用标签介绍:

1、设置字体标签

​ font标签

<html>
<head>
<meta charset="UTF-8">
<title>1.font标签.html</title>
</head>
<body>

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

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


</body>
</html>

2、特殊字符

​ 常用br标签换行

3、超链接标签

​ a标签

<html>
<head>
<meta charset="UTF-8">
<title>4.超链接.html</title>
</head>
<body>
<!--  a标签是超链接
	          href属性设置连接的地址
	          target属性设置哪个目标进行跳转
	              _self        表示当前页面(默认值)
	              ——blank       表示打开新页面来进行跳转
	-->
 
 <a href="http://www.baidu.com">百度</a><br/>
  <a href="http://www.baidu.com"target="_self">百度_self</a><br/>
  <a href="http://www.baidu.com"target="_black">百度_black</a><br/>

4、显示图片标签

​ img 标签可以在 html 页面上显示图片


<html>
<head>
<meta charset="UTF-8">
<title>5.img标签.html</title>
</head>
<body>
    <!--需求 1:使用 img 标签显示一张美女的照片。并修改宽高,和边框属性

        img标签是图片标签,用来显示图片
            src属性可以设置图片的路径
            width属性设置图片的宽度
            height属性设置图片的高度
            border属性设置图片边框大小
            alt属性设置当路径找不到图片时,用来代替显示的文本内容


        在JavaSE中路径分为相对路径和绝对路径
            相对路径:从工程名开始

            绝对路径:盘符:/目录/文件名

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

            绝对路径:
                  正确格式是:http://ip:port/工程名/资源路径

                  错误格式是盘符:盘符:/目录/文件名



    -->


    <img src="../imgs/1.jpg" width="200" hight="260"border="1"alt="美女找不到"/>
    <img src="../imgs/2.jpg" width="200" hight="260"/>
    <img src="../imgs/3.jpg" width="200" hight="260"/>
    <img src="../imgs/4.jpg" width="200" hight="260"/>
    <img src="../imgs/5.jpg" width="200" hight="260"/>
    <img src="../imgs/6.jpg" width="200" hight="260"/>
    <img src="../imgs/7.jpg" width="200" hight="260"/>

</body>
</html>

5、表格标签

​ table标签

 <!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>表格标签</title>
 </head>
 <body>

 <!--
 需求 1:做一个 带表头的 ,三行,三列的表格,并显示边框 需求
     2:修改表格的宽度,高度,表格的对齐方式,单元格间距。

      table标签是表格标签
          border  设置表格标签
          width   设置表格宽度
          height  设置表格高度
          alight  设置表格相对于页面的对齐方式
          cellspacing 设置单元格间距

      tr    是行标签
      th    是表头标签
      td    是单元格标签
          alight  设置单元格文本对齐方式
      b     标签是加粗标签

 -->

 <table align="center" border="1" width="300" height="300" cellspacing="0">
   <tr>
     <th >1.1</th>
     <th>1.2</th>
     <th>1.3</th>
   </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>
</html>

6、跨行跨列标签

​ 属性设置跨列:colspan
​ 属性设置跨行: rowspan

<!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>7.表格的跨行跨列</title>
 </head>
 <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 colspan="2"  rowspan="2">4.4</td>
    </tr>



    <tr>
      <td>5.1</td>
      <td>5.2</td>
      <td>5.3</td>

    </tr>
  </table>


 </body>
</html>

7、内嵌窗口

​ iframe 框架标签

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>8.iframe标签.html</title>
</head>
<body>
 我是一个单独的完整页面
  <!--ifarme标签可以在页面上开辟一个小区域显示一个单独的页面
        ifarme和a标签组合使用的步骤;
            1、在ifarme标签中使用name属性定义的一个名称
            2、在a标签的target属性上设置ifarme的name属性值
  -->
  <iframe src="3.标题标签.html" width="500" height="400" name="abc"></iframe>
  <br/>

  <ul>
    <li><a href="0-标签语法.html" target="abc">0-标签语法.html</a></li>
    <li><a href="1.font标签.html" target="abc">1、font标签.html</a></li>
    <li><a href="2.特殊字符.html" target="abc">2、特殊字符.html</a></li>
  </ul>

</body>
</html>

8、表单标签

8.1 表单标签

forme标签就是表单

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 属性设置每行可以显示几个字符宽度

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>表单的显示</title>
</head>
<body>
<!--
    需求 1:创建一个个人信息注册的表单界面。包含用户名,密码,确认密码。性别(单选),兴趣爱好(多选),国籍(下 拉列表)。隐藏域,自我评价(多行文本域)。重置,提交。

    forme标签就是表单
        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>
       <h1 align="center">用户注册</h1>
      <table align="center">
        <tr>
          <td> 用户名称:</td>
          <td>
            <input type="text" value="默认值"/><br/>
          </td>
        </tr>
        <tr>
          <td>用户密码:</td>
          <td><input type="password" /><br/></td>
        </tr>
        <tr>
          <td>  确认密码:</td>
          <td><input type="password" /><br/> </td>
        </tr>
        <tr>
          <td>性别: </td>
          <td><input type="radio" name="sex" checked="checked"/><input type="radio" name="sex"/><br/>
          </td>
        </tr>
        <tr>
          <td> 兴趣爱好:</td>
          <td> <input type="checkbox"/>抽烟<input type="checkbox"/>喝酒<input type="checkbox"checked="checked"/>烫头<br/></td>
        </tr>
        <tr>
          <td>  国籍:</td>
          <td>
            <select>
              <option>--请选择国籍</option>
              <option selected="selected">中国</option>
              <option>俄罗斯</option>
              <option>乌克兰</option>
            </select><br/>
          </td>
        </tr>
        <tr>
          <td> 自我评价:</td>
          <td>  <textarea rows="10" close="20" >我才是默认值</textarea><br/></td>
        </tr>
        <tr>
          <td>   <input type="reset"/></td>
          <td align="center"> <input type="submit" /></td>
        </tr>
        <tr>
         <!-- <td> <input type="file"/><br/></td>-->
          <td > <input type="hidden" name="fdejcvhsdg"/></td>
        </tr>

      </table>


    </form>
</body>
</html>
8.2 表单提交的细节
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>表单的显示</title>
</head>
<body>
<!--
    forme标签是表单标签
        action属性设置提交的服务器地址
        method属性设置提交的方式get(默认值)或post

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

        get请求的特点是:
            1、浏览器地址栏中的地址是:action属性+[?+请求参数]
                请求参数的格式是:name=value&name=value

                password=444
                &
                sex=boy
                &
                hobby=perming

            2、不安全
            3、它有数据长度的限制

        post请求的特点是:
            1、浏览器地址中只有action属性值
            2、相对于get请求要安全
            3、理论上没有数据长度的限制

-->
    <form action="https://locallhost:8080" method="post">
        <td > <input type="hidden" name="action" value="login"/></td>
       <h1 align="center">用户注册</h1>
      <table align="center">
        <tr>
          <td> 用户名称:</td>
          <td>
            <input type="text" name="username" value="默认值"/><br/>
          </td>
        </tr>
        <tr>
          <td>用户密码:</td>
          <td><input type="password" name="password"/><br/></td>
        </tr>
        <!--<tr>
          <td>  确认密码:</td>
          <td><input type="password" /><br/> </td>
        </tr>-->
        <tr>
          <td>性别: </td>
          <td><input type="radio" name="sex" checked="checked" value="boy"/><input type="radio" name="sex" value="girl"/><br/>
          </td>
        </tr>
        <tr>
          <td> 兴趣爱好:</td>
          <td> <input name="hobby" type="checkbox" value="Smoking"/>抽烟
             <input name="hobby" type="checkbox" value="Drinking"/>喝酒
             <input name="hobby" type="checkbox"checked="checked" value="perming"/>烫头
             <br/>
          </td>
        </tr>
        <tr>
          <td>  国籍:</td>
          <td>
            <select name="county">
              <option value="none">--请选择国籍</option>
              <option selected="selected" value="cn">中国</option>
              <option value="ru">俄罗斯</option>
              <option value="wkl">乌克兰</option>
            </select><br/>
          </td>
        </tr>
        <tr>
          <td> 自我评价:</td>
          <td>  <textarea rows="10" close="20" >我才是默认值</textarea><br/></td>
        </tr>
        <tr>
          <td>   <input type="reset" /></td>
          <td align="center"> <input type="submit" /></td>
        </tr>

      </table>


    </form>
</body>
</html>

9、其他常用标签

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>其他标签</title>
</head>
<body>
    <!--
    需求 1:div、span、p 标签的演示
        div           标签默认独占一行
        span标签      它的长度是封装数据的长度
        p段落标签       默认会在段落上方或下方各空出一行(如果已有就不再空)


    -->
  <div>div标签1</div>
  <div>div标签2</div>
  <span>span标签1</span>
  <span>span标签2</span>
  <p>p标签段落1</p>
  <p>p标签段落2</p>

</body>
</html>

CSS技术

1、CSS 技术介绍

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

2、CSS语法规则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-acBqWH0q-1647157677235)(C:\Users\lenovo\Pictures\Saved Pictures\image-20220313110423206.png)]

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

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

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

** 例如:**

​ p{

​ color:red;font-size:30px;

​ }

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

​ CSS 注释:/注释内容/

3、CSS与HTML结合方式

​ 常用第三种

  • 1、

    在标签的 style 属性上设置”key:value value;”,修改标签样式

  • 2、

    在 head 标签中,使用 style 标签来定义各种自己需要的 css 样式。

    格式如下:

    xxx {

    Key : value value;

    }

  • 3、

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

    使用 html 的 <link rel=“stylesheet” type=“text/css” href="./styles.css" /> 标签 导入 css 样

    式文件

    CSS:

div{
  border: 1px solid red;
}
span{
  border: 1px solid red;
}

​ HTML:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <!--link标签专门用来引入css样式代码-->
  <link rel="stylesheet" type="text/css" href="1.css"/>
</head>
<body>
  <!--需求 1:分别定义两个 div、span 标签,分别修改每个 div 标签的样式为:边框 1 个像素,实线,红色。

  -->
  <div  >div 标签 1</div>
  <div   >div 标签 2</div>
  <span  >span 标签 1</span>
  <span   >span 标签 2</span>
</body>
</html>

4、CSS选择器

1、标签名选择器

​ 标签名选择器的格式是:

​ 标签名{

​ 属性:值;

​ }

​ 标签名选择器,可以决定哪些标签被动的使用这个样式

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>CSS选择器</title>
    <style type="text/css">
      div{
            border: 1px solid yellow;
            color :blue;
            font-size : 30px;
      }
      span{
            border: 1px dashed blue;
            color :yellow;
            font-size : 20px;
      }
    </style>

</head>
<body>


 <!--
 需求1:在所有div标签上修改字体颜色为蓝色,字体大小30个像素。边框为1像素黄色实线。
 并且修改所有span 标签的字体颜色为黄色,字体大小20个像素。边框为1像素蓝色虚线。
  -->
 <div>div标签1</div>
 <div>div标签2</div>
 <span>span标签1</span>
 <span>span标签2</span>

</body>
</html>

2、id选择器

​ id 选择器的格式是:

​ #id 属性值{

​ 属性:值;

​ }

​ id 选择器,可以让我们通过 id 属性选择性的去使用这个样式。

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>ID选择器</title>
  <style type="text/css">

    #id001{
          color:blue;
          font-size: 30px;
          border: 1px yellow solid;
    }

    #id002{
      color:red;
      font-size:20px;
      border: 5px blue dotted;
    }

  </style>
</head>
<body>

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

 第二个div 标签定义 id 为 id002 ,然后根据id 属性定义css样式 修改的字体颜色为红色,字体大小20个像素。边框为5像素蓝色点线。
  -->

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

</body>
</html>

3、class 选择器(类选择器)

​ class 类型选择器的格式是:

​ **.**class 属性值{

​ 属性:值;

​ }

​ class 类型选择器,可以通过 class 属性有效的选择性地去使用这个样式

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class类型选择器</title>
  <style type="text/css">

    .class01{
      color: blue;
      font-size: 30px;
      border: 1px yellow solid;
    }

    .class02{
      color: gray;
      font-size: 26px;
      border: 1px red solid;
    }

  </style>
</head>
<body>

 <!--
  需求1:修改 class 属性值为 class01的 span 或 div 标签,字体颜色为蓝色,字体大小30个像素。边框为1像素黄色实线。
  需求2:修改 class 属性值为 class02的 div 标签,字体颜色为灰色,字体大小26个像素。边框为1像素红色实线。
  -->

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

</body>
</html>

4、组合选择器

​ 组合选择器的格式是:

​ 选择器 1,选择器 2,选择器 n{

​ 属性:值;

​ }

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

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class类型选择器</title>
  <style type="text/css">
    .class01,#id01{
      color:blue;
      font-size:20px;
      border:1px yellow solid;
    }
  </style>
</head>
<body>

 <!--
 需求1:修改 class="class01" 的div 标签 和 id="id01" 所有的span标签,
 字体颜色为蓝色,字体大小20个像素。边框为1像素黄色实线。
  -->

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

</body>
</html>

5、常用选择器

​ 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

​ 4、字体样式:

​ color:#FF0000;字体颜色红色

​ font-size:20px; 字体大小

​ 5、红色 1 像素实线边框

​ border:1px solid red;

​ 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;

​ }

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>06-css常用样式.html</title>
  <style type="text/css"0>

    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 red solid;
      border-collapse: collapse;
    }
    td{
      border:1px red solid;
    }
    ul{
      list-style: none;
    }

  </style>
</head>
<body>
      <ul>
        <li>1111111111</li>
        <li>1111111111</li>
        <li>1111111111</li>
        <li>1111111111</li>
        <li>1111111111</li>
      </ul>
      <table>
        <tr>
          <td>1.1</td>
          <td>1.2</td>
        </tr>
      </table>
      <a href="http://www.baidu.com">百度</a>
      <div>我是div标签</div>
</body>
</html>

JavaScript

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lx5pcFyl-1647157677236)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220313141450024.png)]

1、JavaScript特点:

​ 1. 交互性(它可以做的就是信息的动态交互)

​ 2. 安全性(不允许直接访问本地硬盘)

​ 3. 跨平台性(只要是可以解释 JS 的浏览器都可以执行,和平台无关)

​ js是弱类型,java是强类型

​ 弱类型就是类型可变

​ 强类型,就是定义变量的时候,类型已确定,而且不可变

​ int i= 12;

​ var i;

​ i = 12; 数值型

​ i = “abc” 字符串类型

2、JavaScript html 代码的结合方式

1、第一种方式

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

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript">
    /*alreat是javaScript语言提供的一个警告框函数
    * 它可以接收任意类型的参数,这个参数就是警告框的提示信息
    * */
    alert("hello javaScript");
  </script>
</head>
<body>

</body>
</html>

2、第二种方式

​ 使用 script 标签引入 单独的 JavaScript 代码文件

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <!--
      现在需要使用script引入外部的js文件啊来执行
      src属性专门用来引入js文件路径(可以是相对路径,也可以是绝对路径)

      script标签可以用来定义js代码,也可以用来引入js文件
      但是,两个功能二选一使用,不能同时使用两个功能
  -->
    <script type="text/javascript" src="1.js"></script>
    <script type="text/javascript">
      alert("刘十三");
    </script>

</head>
<body>

</body>
</html>

3、变量

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

​ JavaScript 的变量类型:

​ 数值类型: number

​ 字符串类型: string

​ 对象类型: object

​ 布尔类型: boolean

​ 函数类型: function

JavaScript 里特殊的值:

undefined 未定义,所有 js 变量未赋于初始值的时候,默认值都是 undefined.

null 空值

NaN 全称是:Not a Number。非数字。非数值。

JS 中的定义变量格式:

var 变量名;

var 变量名 = 值;

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>3
  <script type="text/javascript">
    var  i;
    //alert(i);// undefined
    i = 12;
    //typeof()是javaScript语言提供的一个函数
    //它可以取变量的数据类型返回
    alert(typeof(i)); //number
    i="abc";
    alert(typeof(i));

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

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

</body>
</html>

4、关系(比较)运算

​ 等于: == 等于是简单的做字面值的比较

​ 全等于: === 除了做字面值的比较之外,还会比较两个变量的数据类型

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript">
  var  a = "12";
  var  b = 12;

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

  </script>
</head>
<body>

</body>
</html>

5、逻辑运算

​ 且运算: &&

​ 或运算: ||

​ 取反运算: !

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

​ 0 、null、 undefined、””(空串) 都认为是 false;

​ && 且运算。 有两种情况:

​ 第一种:当表达式全为真的时候。返回最后一个表达式的值。

​ 第二种:当表达式中,有一个为假的时候。返回第一个为假的表达式的值

​ || 或运算

​ 第一种情况:当表达式全为假时,返回最后一个表达式的值

​ 第二种情况:只要有一个表达式为真。就会把回第一个为真的表达式的值

​ 并且 && 与运算 和 ||或运算 有短路。

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

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript">
    /*在 JavaScript 语言中,所有的变量,都可以做为一个 boolean 类型的变量去使用。.
     0 、null、 undefined、””(空串) 都认为是 false;
     */

  /*  var  a = 0;
    if(a){
       alert("零为真");
    }else{
       alert("零为假");
    }
     var  b = null;
    if(b){
       alert("null为真");
    }else{
       alert("null为假");
    }
    var  c = undefined;
    if(c){
       alert("undefined为真");
    }else{
       alert("undefined为假");
    }
    var  d = "";
    if(d){
       alert("空串为真");
    }else{
       alert("空串为假");
    }
    */

   /* && 且运算。 有两种情况:
    第一种:当表达式全为真的时候。返回最后一个表达式的值。
    第二种:当表达式中,有一个为假的时候。返回第一个为假的表达式的值
*/

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

    //alert(a && b);//true
    //alert(b && a);//true
    //alert(a && d);//false
    //alert(a && c);//null
    //alert(a && d && c);//false


   /* || 或运算 第一种情况:当表达式全为假时,返回最后一个表达式的值
    第二种情况:只要有一个表达式为真。就会把回第一个为真的表达式的值
*/

    //alert(d || c);//null
    //alert(c || d);//false


    //alert(a || c);//abc
    alert(b || c);//true


  </script>
</head>
<body>

</body>
</html>

6、数组

​ JS 中 数组的定义:

​ 格式:

​ var 数组名 = []; // 空数组

​ var 数组名 = [1 , ’abc’ , true]; // 定义数组同时赋值元素

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript">
    var arr = [true,1];//定义一个空数组
    //alert( arr.length);//0

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

    //javaScript语言中的数组,只要我们通过数组下标赋值,那么最大的下标值就会自动给数组做扩容操作
    arr[2]="abc";
    alert(arr.length);//3

    //alert(arr[1]);//undefined

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


  </script>
</head>
<body>

</body>
</html>

7、函数

7.1 函数的定义

第一种:使用 function 关键字来定义函数。

​ 使用的格式如下:

​ function 函数名(形参列表){

​ 函数体

​ }

​ 在 JavaScript 语言中,如何定义带有返回值的函数?

​ 只需要在函数体内直接使用 return 语句返回值即可!

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript">
    //定义一个无参函数
      function fun(){
        alert("无参函数被调用了");
      }
      //函数调用===才会执行
      //fun();

    function fun2(a,b){
        alert("有参函数fun2()被调用了 a=>"+a + ";b=>"+ b );
    }

    //fun2(12,"abnc");

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

      alert(sum(100,150));
  </script>


</head>
<body>

</body>
</html>
第二种:

​ 使用格式如下:

​ var 函数名 = function(形参列表) { 函数体 }

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript">
    var fun = function (){
      alert("无参函数");
    }
    //fun();

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

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

  </script>
</head>
<body>

</body>
</html>
注意:

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

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript">
    function fun(){
      alert("无参函数fun()");
    }

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

    fun();
  </script>
</head>
<body>

</body>
</html>

7.2 函数的 arguments 隐形参数

​ (只在 function 函数内)

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

​ 隐形参数特别像 java 基础的可变长参数一样。

​ public void fun( Object … args );

​ 可变长参数其他是一个数组。

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

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript">
    function fun(){
      //alert( arguments.length );//可查看参数个数

      /*alert( arguments.length[0]);
      alert( arguments.length[1]);
      alert( arguments.length[2]);
      */

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

      alert("无参函数fun()");
    }
    //fun(1,"ad",true);

    //需求:要求编写一个函数,用于计算所有参数相加的和并返回

    function sum(num1,num2){
      var result = 0;
      for(var i = 0; i<arguments.length; i++){
        if(typeof arguments[i] == "number"){
          result +=arguments[i];
        }

      }
      return result;
    }

    alert(sum(1,2,3,"ale",4,7,5,6))
  </script>
</head>
<body>

</body>
</html>

8、JS中的自定义对象

8.1 Object 形式的自定义对象

对象的定义:

var 变量名 = new Object(); // 对象实例(空对象)

变量名.属性名 = 值; // 定义一个属性

变量名.函数名 = function(){} // 定义一个函数

对象的访问:

​ 变量名.属性 / 函数名();

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <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.name);
    obj.fun();

  </script>
</head>
<body>

</body>
</html>

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

​ 对象的定义:

​ var 变量名 = { // 空对象

​ 属性名:值, // 定义一个属性

​ 属性名:值, // 定义一个属性

​ 函数名:function(){} // 定义一个函数

​ };

对象的访问:

​ 变量名.属性 / 函数名();

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript">
    /*对象的定义:
     var 变量名 = { // 空对象
     属性名:值, // 定义一个属性
      属性名:值, // 定义一个属性
      函数名:function(){} // 定义一个函数
      };*/
      var obj = {
        name:"刘十三",
        age:18,
        fun:function (){
          alert("姓名:" + this.name +"  年龄:" + this.age);
        }
      };

      alert(obj.name);
      obj.fun();

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




  </script>
</head>
<body>

</body>
</html>

9、JS中的事件

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

常用的事件:

** 1、onload** 加载完成事件:

​ 页面加载完成之后,常用于做页面 js 代码初始化操作

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript">
    //onload事件的方法
    function onlaodFun(){
      alert("静态注册onload事件,所有代码");
    }

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

  </script>

</head>
<!--
  静态注册onload-事件
  onload事件是浏览器解析页面完成后自动触发的事件
  <body οnlοad=onlaodFun();>
  -->
<body>


</body>
</html>
** 2、onclick** 单击事件:

​ 常用于按钮的点击响应操作。

<!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(){
          //获取标签
          /*
          * document 是JavaScript语言提供的一个对象(文档)
          * get        获取
          * Element   元素(就是标签)
          * By        通过。。 由。。经。。
          * Id        id属性
          * getElemrntById通过id属性获取标签对象
          * */
         var btnobj = document.getElementById("btn01");
         //alert( btnobj );
          //通过标签对象.事件名 = function(){}
            btnobj.onclick = function (){
              alert("动态注册onclick事件");
            }
        }
      </script>

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

</body>
</html>
** 3、onblur** 失去焦点事件:

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

<!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>
    用户名:<input type="text" onblur="onblurFun();"><br/>
    密码:<input id = "password"  type="text"><br/>
</body>
</html>
** 4、onchange** 内容发生改变事件:

​ 常用于下拉列表和输入框内容发生改变后操作

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript">
    function onblurFun(){
      alert("女神已经改变了");
    }

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

      请选择你心目中的男神
      <select id="sel01">
        <option>--男神--</option>
        <option>--刘十三--</option>
        <option>--蔡徐坤--</option>
    </select>
</body>
</html>
** 5、onsubmit** 表单提交事件:

​ 常用于表单提交前,验证所有表单项是否合法。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript">
    function onsubmitFun(){
      //要验证表单是符合法,如果有一个不合法就阻止表单提交
      alert("静态注册表单提交事件---发现不合法");

      return true;
    }

    window.onload = function (){
      //获取标签对象
        var formObj = document.getElementById("form01");
        //alert(formObj);
      //通过标签对象.事件名 = function(){}
        formObj.onsubmit = function (){
          alert("动态注册表单提交事件---发现不合法");

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

10、DOM模型

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

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

10.1 Document 对象的理解

​ **第一点:**Document它管理了所有的 HTML 文档内容。

​ **第二点:**document它是一种树结构的文档。有层级关系。

​ 第三点:它让我们把所有的标签 都 对象化

​ 第四点:我们可以通过document 访问所有的标签对象。

模拟化对象相当于:

​ class Dom{

​ private String id;

​ // id 属性

​ private String tagName; //表示标签名

​ private Dom parentNode; //父亲

​ private List children; // 孩子结点

​ private String innerHTML; // 起始标签和结束标签中间的内容

​ }

10.2 Document对象中方法介绍

document.getElementById(elementId)

​ 通过标签的 id 属性查找标签 dom 对象,elementId 是标签的 id 属性值

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript">
    /*需求:当用户点击了校验按钮,要获取输出框中的内容,然后验证其是符合法。<br/>
    * 验证的规则是,必须由字母,数字,下划线组成,并且下划线长度是5到12位
    * */
    function onclickFun(){
      //当我们操作一个标签的时候,一定要获取这个标签的对象
      var usernameObj = document.getElementById("username");
      //[object HTMLInputElement] 他就是dom对象
      //alert(usernameObj.value);
      var usernameText = usernameObj.value;
      //如何验证验证字符串符合某个规则,需要使用正则表达式
        
      var patt = /^\w{5,12}$/;
        
      //输入框中从头到尾检查,必须是字母数字下划线,长度是五到十二位
        
      /*
      * test()方法用于测试某个字符串,是不是匹配我的规则,
      * 匹配就返回true,不匹配就返回false
      * */

      var usenamrSpanObj = document.getElementById("usenameSpan");
      //innerHTML 表示起始标签中的内容
      //innerHTML 这个属性可读,可写
     usenamrSpanObj.innerHTML

      if(patt.test(usernameText)){
        //alert("用户名合法!");
        //usenamrSpanObj.innerHTML = "用户名合法!";
        usenamrSpanObj.innerHTML = "<img src=\"right.png\" width=\"18\" height=\"18\">";

      }else{
        //alert("用户名不合法!");
        //usenamrSpanObj.innerHTML = "用户名不合法!";
        usenamrSpanObj.innerHTML = "<img src=\"wrong.png\" width=\"18\" height=\"18\">";
      }

    }
  </script>
</head>
<body>
    用户名:<input type="text" id = "username" value="vzg"/>
    <span style="color: red;" id="usenameSpan">

    </span>
    <button onclick="onclickFun();">校验</button>
</body>
</html>
** document.getElementsByName(elementName)**

​ 通过标签的 name 属性查找标签 dom 对象,elementName 标签的 name 属性值

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript">
    //全选
    function checkALL(){
      //让所有复选框都选中
      // document.getElementsByName("");是根据指定的name属性查询返回多个标签对象集合
      //这个集合操作跟数组一样
      //集合中每个元素都是dom对象
      //这个集合中的元素顺序是他们在HTML中从上到下的顺序
      var hobbies = document.getElementsByName("hobby");
      //checked表示复选框的状态,如果选中是true,不选中是false
      //checked这个属性可读,可写
      for(var i = 0;i<hobbies.length; i++){
        hobbies[i].checked = true;
      }
     // alert(hobbies[0].value);
    }
    //全不选
    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){
          hobbies[i].checked = false;
        }else{
          hobbies[i] = true;
        }*/
      }
    }

  </script>
</head>
<body>
  兴趣爱好:
  <input type="checkbox" name="hobby" value="cpp">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>
</html>
document.getElementsByTagName(tagname)

​ 通过标签名查找标签 dom 对象。tagname 是标签名

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <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">C++
  <input type="checkbox"  value="java">Java
  <input type="checkbox"  value="js">JavaScript
  <br/>
  <button onclick="checkALL();">全选</button>

</body>
</html>

查询方法优先级:

​ document 对象的三个查询方法,如果有 id 属性,优先使用 getElementById 方法来进行查询

​ 如果没有 id 属性,则优先使用 getElementsByName 方法来进行查询

​ 如果 id 属性和 name 属性都没有最后再按标签名查 getElementsByTagName

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

10.3 节点常用属性和方法

​ 节点就是标签对象

方法:

通过具体的元素节点调用

getElementsByTagName()

方法,获取当前节点的指定标签名孩子节点

appendChild( oChildNode )

方法,可以添加一个子节点,oChildNode 是要添加的孩子节点

属性:

childNodes 属性,获取当前节点的所有子节点

firstChild 属性,获取当前节点的第一个子节点

lastChild 属性,获取当前节点的最后一个子节点

parentNode 属性,获取当前节点的父节点

nextSibling 属性,获取当前节点的下一个节点

previousSibling 属性,获取当前节点的上一个节点

className 用于获取或设置标签的 class 属性值

innerHTML 属性,表示获取/设置起始标签和结束标签中的内容

innerText 属性,表示获取/设置起始标签和结束标签中的文本

@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;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>dom查询</title>
<link rel="stylesheet" type="text/css" href="style/css.css" />
<script type="text/javascript">
    window.onload = function (){
  //1.查找#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 genters = document.getElementsByName("gender");
      alert(genters.length);
  };
  //4.查找#city下所有li节点
  var btn04Ele = document.getElementById("btn04");
  btn04Ele.onclick = function(){
      //1、获取id为city的节点
      //2、通过city节点.getElementsByTagName标签名查子节点
      var list = document.getElementById("city").getElementsByTagName("li");
      alert(list.length);
  };
  //5.返回#city的所有子节点
  var btn05Ele = document.getElementById("btn05");
  btn05Ele.onclick = function(){
      //1.获取id为city的节点
      //2.通过city获取所有子节点
     alert(document.getElementById("city").childNodes.length);
  };
  //6.返回#phone的第一个子节点
  var btn06Ele = document.getElementById("btn06");
  btn06Ele.onclick = function(){
      //查找id为phone的节点、
      alert(document.getElementById("phone").firstChild.innerHTML);
  };
  //7.返回#bj的父节点
  var btn07Ele = document.getElementById("btn07");
  btn07Ele.onclick = function(){
      //查询id为bj的节点
      var lis = document.getElementById("bj");
      //bj节点获取父亲节点
      alert(lis.parentNode.innerHTML);
  };
  //8.返回#android的前一个兄弟节点
  var btn08Ele = document.getElementById("btn08");
  btn08Ele.onclick = function(){
      //获取id为Android的节点
      //通过Android节点获取前面的兄弟节点
      alert(document.getElementById("android").previousSibling.innerHTML);
  };
  //9.读取#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);

    };
 };
</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>
</body>
</html>

正则表达式

var patt = /^\w{5,12}$/;

​ 输入框中从头到尾检查,必须是字母数字下划线,长度是五到十二位

RegExp 对象

正则表达式是描述字符模式的对象。

正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。

语法

var patt=new RegExp(pattern,modifiers);

或者更简单的方式:

var patt=/pattern/modifiers;

  • pattern(模式) 描述了表达式的模式
  • modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配

修饰符

修饰符用于执行区分大小写和全局匹配:

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

方括号

方括号用于查找某个范围内的字符:

表达式描述
[abc]查找方括号之间的任何字符。
[^abc]查找任何不在方括号之间的字符。
[0-9]查找任何从 0 至 9 的数字。
[a-z]查找任何从小写 a 到小写 z 的字符。
[A-Z]查找任何从大写 A 到大写 Z 的字符。
[A-z]查找任何从大写 A 到小写 z 的字符。
[adgk]查找给定集合内的任何字符。
[^adgk]查找给定集合外的任何字符。
(red|blue|green)查找任何指定的选项。

元字符

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

元字符描述
.查找单个字符,除了换行和行结束符。
\w查找单词字符。
\W查找非单词字符。
\d查找数字。
\D查找非数字字符。
\s查找空白字符。
\S查找非空白字符。
\b匹配单词边界。
\B匹配非单词边界。
\0查找 NUL 字符。
\n查找换行符。
\f查找换页符。
\r查找回车符。
\t查找制表符。
\v查找垂直制表符。
\xxx查找以八进制数 xxx 规定的字符。
\xdd查找以十六进制数 dd 规定的字符。
\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。

量词

量词描述
n+匹配任何包含至少一个 n 的字符串。
n*匹配任何包含零个或多个 n 的字符串。
n?匹配任何包含零个或一个 n 的字符串。
n{X}匹配包含 X 个 n 的序列的字符串。
n{X,Y}匹配包含 X 或 Y 个 n 的序列的字符串。
n{X,}匹配包含至少 X 个 n 的序列的字符串。
n$匹配任何结尾为 n 的字符串。
^n匹配任何开头为 n 的字符串。
?=n匹配任何其后紧接指定字符串 n 的字符串。
?!n匹配任何其后没有紧接指定字符串 n 的字符串。

RegExp 对象方法

方法描述FFIE
compile编译正则表达式。14
exec检索字符串中指定的值。返回找到的值,并确定其位置。14
test检索字符串中指定的值。返回 true 或 false。14

支持正则表达式的 String 对象的方法

方法描述FFIE
[search]检索与正则表达式相匹配的值。14
[match]找到一个或多个正则表达式的匹配。14
[replace]替换与正则表达式匹配的子串。14
[split]把字符串分割为字符串数组。14
l)查找换行符。
\f查找换页符。
\r查找回车符。
\t查找制表符。
\v查找垂直制表符。
\xxx查找以八进制数 xxx 规定的字符。
\xdd查找以十六进制数 dd 规定的字符。
\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。

量词

量词描述
n+匹配任何包含至少一个 n 的字符串。
n*匹配任何包含零个或多个 n 的字符串。
n?匹配任何包含零个或一个 n 的字符串。
n{X}匹配包含 X 个 n 的序列的字符串。
n{X,Y}匹配包含 X 或 Y 个 n 的序列的字符串。
n{X,}匹配包含至少 X 个 n 的序列的字符串。
n$匹配任何结尾为 n 的字符串。
^n匹配任何开头为 n 的字符串。
?=n匹配任何其后紧接指定字符串 n 的字符串。
?!n匹配任何其后没有紧接指定字符串 n 的字符串。

RegExp 对象方法

方法描述FFIE
compile编译正则表达式。14
exec检索字符串中指定的值。返回找到的值,并确定其位置。14
test检索字符串中指定的值。返回 true 或 false。14

支持正则表达式的 String 对象的方法

方法描述FFIE
[search]检索与正则表达式相匹配的值。14
[match]找到一个或多个正则表达式的匹配。14
[replace]替换与正则表达式匹配的子串。14
[split]把字符串分割为字符串数组。14
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笙鹿鸣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值