day35_js

今日内容

0 复习昨日
1 作业
2 BOM
3 定时和倒计时
4 案例
5 正则表达式

0 复习昨日

1 事件

  • 浏览器上发生的事件,例如鼠标事件,键盘事件,表单事件,加载事件
  • 事件的绑定
    • 事件和响应都写在标签上
    • 事件写在标签上,响应抽取成函数
    • 事件和响应与标签分离
  • 演示事件
  • 表单提交事件
    • 提交的函数中要返回true/false
    • 事件中也要写return
    • οnsubmit=“return tijiao()”

2 DOM

  • HTML的加载,会将标签在文档流中形成dom树
  • 查找元素
    • document.getElementById()
    • document.getElementsByTagName()
    • document.getElementsByClassgName()
  • 获得/设置元素的内容
    • innerHTML
    • innerText
  • 获得/设置元素的属性
    • id
    • type
    • value
  • 获得/设置元素的样式
    • 标签对象.style.css属性
  • 创建标签
    • document.createElement(‘标签名’)
  • 创建文本内容
    • document.createTextNode(‘文本’)
  • 追加标签
    • 元素对象.appendChild(节点)
  • 删除标签
    • 父元素对象.removeChild(子节点)

1 BOM

js技术,包含

  • 基本语法
  • DOM
  • BOM

BOM,Browser Object Mode,浏览器对象模型

详细的BOM操作,可以参考APIJavaScript Window - 浏览器对象模型 (w3school.com.cn)


浏览器对象操作,

  • 浏览器弹框
    • alert
    • confirm
    • prompt
  • location
  <body>
    <button id="btn">点击获得locationbutton>
    <script>
      var btn = document.getElementById("btn");
      btn.onclick = function () {
        //  window.location获得的是一个对象,
        // 对象内部有关于当前页面的大部分信息
        // 比如说,路径,协议,主机名等等
        var location = window.location;
        // console.log(location);
        // 一般会用到是路径
        // 获得路径
        var href = window.location.href;
        // console.log(href);
        // 设置当前页面路径,当前页面就会跳转过去!
        window.location.href = "http://www.baidu.com";
      };
    script>
  body>

2 固定时间和间隔时间

固定时间

  • setTimeout(函数,时间)
  • 在指定时间(毫秒)结束后,去执行参数1 函数,且只执行一次

间隔时间

  • setInterval(函数,时间)
  • 循环在指定时间结束,执行参数1的函数

2.1 固定时间

  <body>
    <button id="btn">点击开始倒计时button>
    <script>
      var btn = document.getElementById("btn");
      btn.onclick = function () {
        // 开始定时
        // setTimeout(function () {
        //   alert("发射!");
        // }, 3000);
        setTimeout(() => {
          alert("发射!222");
        }, 3000);
      };
    script>
  body>

2.2 间隔时间

  <body>
    <button id="btn">点击开始循环button>
    <hr />
    
    <div
      id="box"
      style="
        width: 300px;
        height: 100px;
        border: 20px red solid;
        text-align: center;
        font-size: 50px;
      "
    >
      某某某
    div>
    <button id="btn-name">点击开始点名button>
    <button id="btn-stop">【停】button>
    <script>
      var btn = document.getElementById("btn");
      btn.onclick = function () {
        setInterval(function () {
          console.log(new Date().toLocaleString());
        }, 3000);
      };

      /**
       * 当开始点名,间隔函数开始不断改变div内的名字
       */
      var dianming = document.getElementById("btn-name");
      var box = document.getElementById("box");
      var nameArr = ["盼盼", "谭昊", "中政", "顺博", "九龙", "克龙"];
      var sj;
      dianming.onclick = function () {
        // 给计时器设置名字,sj
        sj = setInterval(() => {
          var index = parseInt(Math.random() * nameArr.length);
          var name = nameArr[index];
          box.innerText = name;
        }, 30);
      };

      var stop = document.getElementById("btn-stop");
      stop.onclick = function () {
        // 结束计时,需要传入计时器名字
        clearInterval(sj);
      };
    script>
  body>

3 正则表达式

3.1 介绍

正则表达式: 一种匹配文字的语法,常用语校验数据格式.

场景: 注册时表达的输入框中内容要求

  • 用户名首字母大小,长度,特殊符号
  • 邮箱格式
  • 手机号格式
  • 身份证格式

正则表达式是由一些符号组成模板,这个模板来匹配一些字符串,通过方法可以判断这些字符串是否符号这个模板

正则表达式的模板的写法

  • [] 内部写匹配的内容
  • [abc] 查找方括号之间的任何字符。
  • [0-9] 查找任何从 0 至 9 的数字。
  • \d 指数字,就是0-9
  • n+ 匹配任何包含至少一个 n 的字符串
  • n* 匹配任何包含零个或多个 n 的字符串。
  • n? 匹配任何包含零个或一个 n 的字符串。
  • n{x} 匹配任何包含x个的字符串
  • n{x,y} 匹配任何包含x-y之间个数的字符串
  • n{x,} 匹配任何包含x或大于x以上个数的字符串
  • ^ 匹配开头
  • $ 匹配末尾
  • . 点在正则表达式中代表所有的意思

正则表达式的方法

  • test() 它通过模式来搜索字符串,然后根据结果返回 true 或 false。
  • exec() 它通过指定的模式(pattern)搜索字符串,并返回已找到的文本。

正则表达式的创建

  • 直接写模板
    • var reg = /模板/;
  • 使用new来创建正则表达式
    • var reg = new RegExp(模板);

3.2 演示【熟悉】

 <body>
    数据<input id="i1" onblur="checkData()" />
    <script>
      var i1 = document.getElementById("i1");
      function checkData() {
        var val = i1.value;
        // 创建正则表达式1
        // var reg = new RegExp("[0-9]");
        // 创建正则表达式2
        var reg = /[0-9]/; // 模板1: 判断内容是否包含0-9之间任何一个数字
        var reg2 = /[a]/; // 模板2: 是否包含a
        var reg3 = /[abc]/; // 模板3: 是否包含abc中任何一个
        var reg4 = /[a-z]/; // 模板4: 是否包含a-z中任何一个
        var reg5 = /[A-Z]/; // 模板5: 是否包含A-Z中任何一个
        var reg6 = /[a-zA-Z]/; // 模板6: 是否包含大小写中任何一个
        var reg7 = /[A-z]/; // 模板7: 是否包含大小写中任何一个(因为ascll码值)
        var reg8 = /[0-9A-Za-z]/; // 模板8: 是否包含数字或者字母
        var reg9 = /[\dA-Za-z]/; // 模板9: 是否包含数字或者字母
        var reg10 = /\d+/; // 匹配至少一个数字
        var reg11 = /\d*/; // 匹配0或者多个数字
        var reg12 = /\d?/; // 匹配0或者1个,只要字符串内有1个或0个就对
        var reg13 = /^\d?$/; // 匹配整个内容中只能有0或者1个数字
        var reg14 = /^\d{4}$/; // 整个内容中只能有数字,且数字个数是4位
        var reg15 = /^\d{4,6}$/; // 整个内容中只能有数字,且数字个数是4-6位
        var reg16 = /^\d{4,}$/; // 整个内容中只能有数字,且数字个数是至少4位
        // 匹配手机号
        // 手机号开头必须是1,第二位可以是3,5,6,8,9,后续数字任意,总长得11位
        var reg17 = /^1[35689]\d{9}$/;

        // 匹配邮箱 [email protected]
        // 开头是数字或者字母,其中必须包含@符号,@后可以是数字和字母,必须有.符号,后面必须是字母
        // .是正则表达式的特殊符号,需要转移
        var reg18 = /^[\dA-Za-z]+@[\da-z]+\.[a-z]+$/;
        console.log(reg18.test(val));
        // 置空
        // i1.value = "";

        // 重点是能看懂就行,会写简单模板
      }
    script>
  body>

3.3 实战【重点】

使用正则表达式进行表达校验

  • 用户名,不能为空,长度6-10之间,只能包含数字和字母
  • 密码,不能为空,长度6-10之间
  • 二次确认,两次密码要一致
  • 手机号,不能为空,要符合规则
  • 邮箱,要符合规则

以上校验,如果出错,要给边框变红,并在后面给出红色提示语句,

如果校验合格,给边框变绿,后面给他绿色提示语句

DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>表单校验title>
    <style>
      body {
        font-size: 30px;
      }
      input {
        height: 40px;
        font-size: 30px;
      }
    style>
  head>
  <body>
    <div>
      <form>
        <table>
          <tr>
            <td>用户名td>
            <td><input id="username" type="text" />td>
            <td><span id="username-span">span>td>
          tr>
          <tr>
            <td>密码td>
            <td><input id="pwd" type="password" />td>
            <td><span>span>td>
          tr>
          <tr>
            <td>二次确认td>
            <td><input id="pwd2" type="password" />td>
            <td><span>span>td>
          tr>
          <tr>
            <td>邮箱td>
            <td><input id="email" type="email" />td>
            <td><span>span>td>
          tr>
          <tr>
            <td>手机号td>
            <td><input id="phone" type="text" />td>
            <td><span>span>td>
          tr>
        table>
      form>
      <script>
        var username = document.getElementById("username");
        var usernameSpan = document.getElementById("username-span");
        // 点入输入框取消样式
        username.onfocus = function () {
          username.style = "";
          usernameSpan.style = "";
          usernameSpan.innerText = "";
        };
        // 失去焦点时校验
        username.onblur = function () {
          var value = username.value;
          console.log(value.length);
          if (value.length == 0) {
            usernameSpan.innerText = "用户名不能为空!";
            usernameSpan.style.color = "red";
            username.style.borderColor = "red";
          } else {
            var reg = /^[\da-z]{6,10}$/;
            if (reg.test(value)) {
              usernameSpan.innerText = "用户名可以使用!";
              usernameSpan.style.color = "green";
            } else {
              usernameSpan.innerText = "用户名不符合要求";
              usernameSpan.style.color = "red";
              username.style.borderColor = "red";
            }
          }
        };
      script>
    div>
  body>
html>

未完,接着写


下周

周一周二学习JQuery,js的框架

周三-周五,学习mysql数据库


周末按照:

1 复习,从第一天HTML开始,把所有标签过一遍,重点是form表单,CSS复习,背住几个常用的属性,盒子模型,JS语法,事件,DOM操作

2 作业题没有写完,重新再写

3 总结自己笔记

4 复习Java代码,JavaSE阶段,最重要的是会用对象,创建对象,方法调用,参数返回值等,会常用类(String,包装类,日期,集合)IO,多线程次重点

你可能感兴趣的:(Java零基础学习,javascript,开发语言,ecmascript)