时间简单介绍加以前知识一些练习的综合案例

167 阅读1分钟

时间简单介绍加以前知识一些练习的综合案例

1.时间

1649304496868.png 就是一些对应年月日星期时分秒的单词,一般月后面要自己手动加一,因为它是0-11的,所有会比正常的月份少一个月,星期是0-6的,但是不用加,因为他星期天是零,其他是正常显示的,用法如下

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1.0,maximum-scale=1,minimum-scale=1,user-scalable=no"
    />
    <title>07-时间对象.html</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
    </style>
  </head>
  <body>
    <script>
      // 1 实例化一个 时间对象 new
      let date = new Date();

      console.log(date.getFullYear()); // 2 输出当下是什么年份
      console.log(date.getMonth()); // 3 输出月份 0-12 都会自己 加一
      console.log(date.getDate()); // 4 几号
      console.log(date.getDay()); // 5 输出星期几 星期一 是 1 星期二  星期六 6 星期天 0
      console.log(date.getHours()); // 6 小时
      console.log(date.getMinutes());// 7 分钟
      console.log(date.getSeconds());// 8 秒

    </script>
  </body>
</html>

2.时间戳

时间戳:1970年1月1号0点0分0秒到现在的时间(毫秒)

// 三种方式 获取时间戳
      // let date=new Date();
      // console.log(date.getTime()); // 方式一

      // console.log(+(new Date()) ); // 方式二 只要日期对象 可以使用 + 将整个对象 转成 时间戳

      // console.log(Date.now()); // 方式三
     一般用法
      // 来快速生成一个不会重复的数字  * 随机数 

将年月日时分秒输出到网页的案例

就是将那些年月日时分秒先做好定义,然后用一个标签来输出,div是不行的,不知道是块级元素不行还是某些不行

<!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>Document</title>
</head>

<body>
    <h1></h1>
    <script>
        let h = document.querySelector('h1')
        setInterval(function () {
//获取
            let data = new Date()
            let n = data.getFullYear() //年
            let y = data.getMonth()  //月
            let r = data.getDate()  //日
            let s = data.getHours()  //时
            let f = data.getMinutes()  //分
            let m = data.getSeconds()  //秒
            //将时间的值赋予h1标签,不用document输出。因为innerText时直接修改h1标签里面的内容
            
            h.innerText = ` ${n}${y + 1}${r}${s}${f}${m}秒`
        }, 1000)
     
    </script>
</body>

</html>

微博发布综合案例

就是要用到创建标签,插入标签,函数,点击时件,input事件,math随机数公式,三元表达式等等知识的案例

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <link rel="stylesheet" href="css/weibo.css" />
  </head>

  <body>
    <div class="w">
      <div class="controls">
        <img src="images/tip.png" alt="" /><br />
        <textarea
          placeholder="说点什么吧..."
          id="area"
          cols="30"
          rows="100"
          maxlength="200"
        ></textarea>
        <div>
          <span class="useCount">0</span>
          <span>/</span>
          <span>200</span>
          <button id="send">发布</button>
        </div>
      </div>
      <div class="contentList">
        <ul>
          <!-- <li>
            <div class="info">
              <img class="userpic" src="./images/9.5/06.jpg" />
              <span class="username">张良</span>
              <p class="send-time">发布于 2022-4-7 15:12:23</p>
            </div>
            <div class="content">sdfdf</div>
            <span class="the_del">X</span>
          </li> -->
        </ul>
      </div>
    </div>
    <script>
      /* 
      1 给发布按钮绑定点击事件 
        1 生成一个li标签
          1 给li添加属性和子元素 
          2 获取文本域的内容 设置到对应的标签中 
        2 插入到ul中 

      2 给文本域绑定 input事件 
        获取文字的长度 设置对应的标签上 文字个数标签上

      3 给删除标签 绑定点击事件
        1 获取它的父节点 parentNode 
        2 让它父节点 删除自己 remove()

       */

      let dataArr = [
        { uname: '司马懿', imgSrc: './images/9.5/01.jpg' },
        { uname: '女娲', imgSrc: './images/9.5/02.jpg' },
        { uname: '百里守约', imgSrc: './images/9.5/03.jpg' },
        { uname: '亚瑟', imgSrc: './images/9.5/04.jpg' },
        { uname: '虞姬', imgSrc: './images/9.5/05.jpg' },
        { uname: '张良', imgSrc: './images/9.5/06.jpg' },
        { uname: '安其拉', imgSrc: './images/9.5/07.jpg' },
        { uname: '李白', imgSrc: './images/9.5/08.jpg' },
        { uname: '阿珂', imgSrc: './images/9.5/09.jpg' },
        { uname: '墨子', imgSrc: './images/9.5/10.jpg' },
        { uname: '鲁班', imgSrc: './images/9.5/11.jpg' },
        { uname: '嬴政', imgSrc: './images/9.5/12.jpg' },
        { uname: '孙膑', imgSrc: './images/9.5/13.jpg' },
        { uname: '周瑜', imgSrc: './images/9.5/14.jpg' },
        { uname: '老夫子', imgSrc: './images/9.5/15.jpg' },
        { uname: '狄仁杰', imgSrc: './images/9.5/16.jpg' },
        { uname: '扁鹊', imgSrc: './images/9.5/17.jpg' },
        { uname: '马可波罗', imgSrc: './images/9.5/18.jpg' },
        { uname: '露娜', imgSrc: './images/9.5/19.jpg' },
        { uname: '孙悟空', imgSrc: './images/9.5/20.jpg' },
        { uname: '黄忠', imgSrc: './images/9.5/21.jpg' },
        { uname: '百里玄策', imgSrc: './images/9.5/22.jpg' },
      ];
      // 发布按钮
      let send = document.querySelector('#send');
      let area = document.querySelector('#area');
      let ul = document.querySelector('ul');
      let useCount = document.querySelector('.useCount');

      // 点击
      send.addEventListener('click', function () {
        // 随机的获取英雄
        let user = getUser();

        // 创建一个li标签
        let li = document.createElement('li');

        // 添加三个大的子元素
        let info = document.createElement('div');
        info.classList.add('info');

        // info要创建三个子元素
        let userpic = document.createElement('img');
        userpic.classList.add('userpic');
        userpic.src = user.imgSrc; // 英雄头像

        let username = document.createElement('span');
        username.classList.add('username');
        username.innerText = user.uname; // 英雄的名称

        let sendTime = document.createElement('p');
        sendTime.classList.add('send-time');
        sendTime.innerText = `发布于 ${getFormatTime()}`;// 显示 时间

        // 把三个子元素都写在 info中
        info.append(userpic, username, sendTime);

        let content = document.createElement('div');
        content.classList.add('content');
        content.innerText = area.value; // 设置文本域的内容

        let the_del = document.createElement('span');
        the_del.classList.add('the_del');
        the_del.innerText = 'X';// 删除标签 X 
        the_del.addEventListener("click",function () {
          this.parentNode.remove();// 删除父元素
          
        })

        // li插入子元素
        li.append(info, content, the_del);

        // li插入到ul中
        ul.appendChild(li);

        // 收尾工作 清空 文本域
        area.value = '';
        useCount.innerText="0"
      });

      // area input事件
      area.addEventListener('input', function () {
        useCount.innerText = area.value.length;
      });

      // 函数 随机获取用户对象
      function getUser() {
        // 随机的获取数组中的元素
        // 获取对应区间的下标
        // 公式  Math.round(Math.random()*(max-min)+min)
        // max =  数组的长度 - 1
        let index = Math.round(Math.random() * (dataArr.length - 1));
        let user = dataArr[index];
        return user;
      }

      // 获取有一定格式的时间
      function getFormatTime() {
        let nowDate = new Date();
        let fullyear = nowDate.getFullYear();
        let month = nowDate.getMonth();
        let date = nowDate.getDate();
        let hours = nowDate.getHours();
        let minutes = nowDate.getMinutes();
        let seconds = nowDate.getSeconds();

        // 将 7 => "07"
        month = month < 10 ? '0' + month : month;
        date = date < 10 ? '0' + date : date;
        hours = hours < 10 ? '0' + hours : hours;
        minutes = minutes < 10 ? '0' + minutes : minutes;
        seconds = seconds < 10 ? '0' + seconds : seconds;

        return `${fullyear}-${month}-${date} ${hours}:${minutes}:${seconds}`;
      }


    </script>
  </body>
</html>

微博发布综合案例-简单化

功能跟上面的一样,就是不用创建和插入标签,但是删除键用不了,不过代码会简洁很多,就是拼接html结构的写法

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <link rel="stylesheet" href="css/weibo.css" />
  </head>

  <body>
    <div class="w">
      <div class="controls">
        <img src="images/tip.png" alt="" /><br />
        <textarea
          placeholder="说点什么吧..."
          id="area"
          cols="30"
          rows="100"
          maxlength="200"
        ></textarea>
        <div>
          <span class="useCount">0</span>
          <span>/</span>
          <span>200</span>
          <button id="send">发布</button>
        </div>
      </div>
      <div class="contentList">
        <ul>
          <!-- <li>
            <div class="info">
              <img class="userpic" src="./images/9.5/06.jpg" />
              <span class="username">张良</span>
              <p class="send-time">发布于 2022-4-7 15:12:23</p>
            </div>
            <div class="content">sdfdf</div>
            <span class="the_del">X</span>
          </li> -->
        </ul>
      </div>
    </div>
    <script>
      /* 
      1 给发布按钮绑定点击事件 
        1 生成一个li标签
          1 给li添加属性和子元素 
          2 获取文本域的内容 设置到对应的标签中 
        2 插入到ul中 

      2 给文本域绑定 input事件 
        获取文字的长度 设置对应的标签上 文字个数标签上

      3 给删除标签 绑定点击事件
        1 获取它的父节点 parentNode 
        2 让它父节点 删除自己 remove()

       */

      let dataArr = [
        { uname: '司马懿', imgSrc: './images/9.5/01.jpg' },
        { uname: '女娲', imgSrc: './images/9.5/02.jpg' },
        { uname: '百里守约', imgSrc: './images/9.5/03.jpg' },
        { uname: '亚瑟', imgSrc: './images/9.5/04.jpg' },
        { uname: '虞姬', imgSrc: './images/9.5/05.jpg' },
        { uname: '张良', imgSrc: './images/9.5/06.jpg' },
        { uname: '安其拉', imgSrc: './images/9.5/07.jpg' },
        { uname: '李白', imgSrc: './images/9.5/08.jpg' },
        { uname: '阿珂', imgSrc: './images/9.5/09.jpg' },
        { uname: '墨子', imgSrc: './images/9.5/10.jpg' },
        { uname: '鲁班', imgSrc: './images/9.5/11.jpg' },
        { uname: '嬴政', imgSrc: './images/9.5/12.jpg' },
        { uname: '孙膑', imgSrc: './images/9.5/13.jpg' },
        { uname: '周瑜', imgSrc: './images/9.5/14.jpg' },
        { uname: '老夫子', imgSrc: './images/9.5/15.jpg' },
        { uname: '狄仁杰', imgSrc: './images/9.5/16.jpg' },
        { uname: '扁鹊', imgSrc: './images/9.5/17.jpg' },
        { uname: '马可波罗', imgSrc: './images/9.5/18.jpg' },
        { uname: '露娜', imgSrc: './images/9.5/19.jpg' },
        { uname: '孙悟空', imgSrc: './images/9.5/20.jpg' },
        { uname: '黄忠', imgSrc: './images/9.5/21.jpg' },
        { uname: '百里玄策', imgSrc: './images/9.5/22.jpg' },
      ];
      // 发布按钮
      let send = document.querySelector('#send');
      let area = document.querySelector('#area');
      let ul = document.querySelector('ul');
      let useCount = document.querySelector('.useCount');

      // 点击
      send.addEventListener('click', function () {
        let user=getUser();
        let liHtml = `
        <li>
            <div class="info">
              <img class="userpic" src="${user.imgSrc}" />
              <span class="username">${user.uname}</span>
              <p class="send-time">发布于 ${getFormatTime()}</p>
            </div>
            <div class="content">${area.value}</div>
            <span class="the_del">X</span>
          </li
        `;
        // 每点击一次 在旧标签的基础上来 拼接多一个标签
        ul.innerHTML += liHtml;

        // 暂时没有办法解决的  实现 点击删除!!  事件委托技术 优雅解决 
      });

      // area input事件
      area.addEventListener('input', function () {
        useCount.innerText = area.value.length;
      });

      // 函数 随机获取用户对象
      function getUser() {
        let index = Math.round(Math.random() * (dataArr.length - 1));
        let user = dataArr[index];
        return user;
      }

      // 获取有一定格式的时间
      function getFormatTime() {
        let nowDate = new Date();
        let fullyear = nowDate.getFullYear();
        let month = nowDate.getMonth();
        let date = nowDate.getDate();
        let hours = nowDate.getHours();
        let minutes = nowDate.getMinutes();
        let seconds = nowDate.getSeconds();

        month = month < 10 ? '0' + month : month;
        date = date < 10 ? '0' + date : date;
        hours = hours < 10 ? '0' + hours : hours;
        minutes = minutes < 10 ? '0' + minutes : minutes;
        seconds = seconds < 10 ? '0' + seconds : seconds;

        return `${fullyear}-${month}-${date} ${hours}:${minutes}:${seconds}`;
      }
    </script>
  </body>
</html>

学成在线内容遍历生成案例

就是遍历的时候不断生成标签,需要多少生成多少,不用写的那么死板

<!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>Document</title>
  <link rel="stylesheet" href="./style.css">
</head>

<body>
  <!-- 
  1 引入style.css
  2 引入 data.js
  3 根据data.js中的data数组 来遍历生成代码 
    最终让网页显示出来 data数组的数据
 -->
  <script src="./data/data.js"></script>
  <div class="box w">
    <div class="box-hd">
      <h3>精品推荐</h3>
      <a href="#">查看全部</a>
    </div>
    <div class="box-bd">
      <ul class="clearfix uls">
        <!-- <li>
          <img src="images/course01.png" alt="" />
          <h4>
            Think PHP 5.0 博客系统实战项目演练
          </h4>
          <div class="info">
            <span>高级</span> • <span>1125</span>人在学习
          </div>
        </li> -->
      </ul>
    </div>
  </div>
  <script>
    /* 
    1 获取到要渲染到页面中的数据  data 
    2 遍历data
     要求使用 createElement appendChild 来往ul中插入 li 元素 
     1 创建一个li标签
     2 创建一个图片便签 设置 src属性
     3 创建一个h4标签 设置文本内容
     4 创建一个div标签 添加一个class info
     5 创建两个span标签
       1个设置内容 高级 
       2个设置人数 1125 

     6 组装
       li标签要 插入 img
       li标签要 插入 h4
       li标签要 插入 div.info
       div.info 要插入两个span 
       ul插入 li 
   3 append可以插入多个元素  appendChild  只能插入一个元素 
     createTextNode 创建文件节点 
     */
    let ul = document.querySelector(".uls")
    //遍历生成后续内容
    for (let index = 0; index < data.length; index++) {
      //创建
      let li = document.createElement("li")

      let img = document.createElement("img")
      img.src = data[index].src

      let h4 = document.createElement("h4")
      h4.innerText = data[index].title

      let div = document.createElement("div")
      div.classList.add("info")

      let span1 = document.createElement("span")
      span1.innerText = "高级"

      let span2 = document.createElement("span")
      span2.innerText = data[index].num
      //createTextNode:创建文本节点
      let text1 = document.createTextNode("•")
      let text2 = document.createTextNode("人在学习")
      //组装

      div.append(span1, text1, span2, text2)
      li.append(img, h4, div)

      ul.appendChild(li)


    }
  </script>
</body>

</html>