当前位置: 首页 > news >正文

【WEB APIs】BOM-操作浏览器

目录

1. Window对象

1.1 BOM

1.2 定时器-延时函数

1.3 JS执行机制

1.4 location对象

1.5 navigator对象(复制)

1.6 history对象

2. 本地存储(重点)

2.1 介绍

2.2 分类

localStorage

sessionStorage

存储复杂数据类型

3. 综合案例—学生就业统计表

3.1 渲染业务

map()

join()

3.2 新增业务

3.3 新增业务


 

1. Window对象

1.1 BOM

    console.log(document === window.document); //true
    function fn() {
      console.log(11);
    }
    window.fn()
    var num = 10 //const let挂在自己的作用域内
    console.log(window.num);

1.2 定时器-延时函数

    const img = document.querySelector('img')
    setTimeout(function () {
      img.style.display = 'none'
    }, 3000)

1.3 JS执行机制

1.4 location对象

  //5秒后跳转
  <a href="http://www.itcast.cn"><span>5</span>秒后跳转</a>
  <script>
    const a = document.querySelector('a')
    let num = 5
    let timerId = setInterval(function () {
      num--
      a.innerHTML = `<span>${num}</span>秒后跳转`
      if (num === 0) {
        clearInterval(timerId)
        // 跳转
        location.href = 'http://www.itcast.cn'
      }
    }, 1000)
  </script>

1.5 navigator对象(复制)

立即执行函数

1.6 history对象

2. 本地存储(重点)

2.1 介绍

2.2 分类

localStorage

 键一定记得加引号,不加当变量名看

本地存储只能存字符串类型

    // localStorage.setItem('键', '值') 键一定记得加引号 不加当变量名看
    localStorage.setItem('uname', 'hahah') //存储方式
    console.log(localStorage.getItem('uname')); //获取方式
    localStorage.removeItem('uname') //删除
    localStorage.setItem('uname', 'llll') //有键是修改
    //本地存储只能存字符串类型
    localStorage.setItem('age', 18)
    console.log(localStorage.getItem('age')); //18以字符串形式存储

sessionStorage

存储复杂数据类型

    const obj = {
      uname: '小明',
      age: 19,
      gender: '男'
    }
    // 1.复杂数据类型存储必须转换成JSON字符串存储
    localStorage.setItem('obj', JSON.stringify(obj))
    //JSON对象	{"uname":"小明","age":19,"gender":"男"}	
    // 2.把JSON字符串转换成对象
    console.log(JSON.parse(localStorage.getItem('obj')));

3. 综合案例—学生就业统计表

3.1 渲染业务

map()

join()

3.2 新增业务

3.3 新增业务

  <script>
    // 参考数据
    const initData = [
      // {
      //   stuId: 1,
      //   uname: '迪丽热巴',
      //   age: 22,
      //   salary: '12000',
      //   gender: '女',
      //   city: '北京',
      //   time: '2099/9/9 08:08:08'
      // }
    ]
    // localStorage.setItem('data', JSON.stringify(initData))
    // 1. 渲染业务
    // 1.1 先读取本地存储的数据
    const arr = JSON.parse(localStorage.getItem('data')) || []
    console.log(arr)
    // 1.2 利用map和join方法来渲染页面
    const tbody = document.querySelector('tbody')
    function render() {
      const trArr = arr.map(function (ele, index) {
        return `
          <tr>
            <td>${ele.stuId}</td>
            <td>${ele.uname}</td>
            <td>${ele.age}</td>
            <td>${ele.gender}</td>
            <td>${ele.salary}</td>
            <td>${ele.city}</td>
            <td>${ele.time}</td>
            <td>
              <a href="javascript:" data-id="${index}">
                <i class="iconfont icon-shanchu"></i>
                删除
              </a>
            </td>
          </tr>
        `
      })

      console.log(trArr)
      // join把数组转换为字符串 追加给tbody 
      tbody.innerHTML = trArr.join('')
      // 显示共计有几条数据
      document.querySelector('.title span').innerHTML = arr.length
    }
    render()

    // 2.新增业务
    const info = document.querySelector('.info')
    const uname = document.querySelector('.uname')
    const age = document.querySelector('.age')
    const salary = document.querySelector('.salary')
    const gender = document.querySelector('.gender')
    const city = document.querySelector('.city')
    info.addEventListener('submit', function (e) {
      e.preventDefault() // 阻止默认提交行为
      // 非空判断
      if (!uname.value || !age.value || !salary.value) {
        return alert('输入内容不能为空')
      }
      // 获取表单元素的值,并追加进数组中
      arr.push({
        stuId: arr.length ? +arr[arr.length - 1].stuId + 1 : 1, //确保id不重复 要考虑数组长度为0的情况
        uname: uname.value,
        age: age.value,
        salary: salary.value,
        gender: gender.value,
        city: city.value,
        time: new Date().toLocaleString()
      })
      render()
      this.reset() //重置表单

      // 把数组转为JSON字符串存入本地存储中
      localStorage.setItem('data', JSON.stringify(arr))
    })

    // 3.删除业务
    // 采用事件委托的形式,给tbody注册点击事件
    tbody.addEventListener('click', function (e) {
      if (e.target.tagName === 'A') {
        if (confirm('确认删除')) { //点击确定返回true,否则false
          arr.splice(e.target.dataset.id, 1) //通过自定义属性知道要删除数组的第几条元素
          render()
          localStorage.setItem('data', JSON.stringify(arr)) //数组更改,本地存储也改,要保证本地存储存最新数据
        }
      }
    })
  </script>

相关文章:

  • Linux 操作系统简介
  • GLOW-TTS
  • gitlab将本地项目提交到远程dev分支
  • 基于SpringBoot + Vue 的图书商城系统
  • Word 小黑第20套
  • Java 买百鸡问题
  • 基于大模型的鼻中隔偏曲预测及手术治疗方案研究报告
  • Linux目录结构以及文件操作
  • Android 11.0 监听某个app启动获取应用使用时长功能实现
  • iStore插件的使用和编译
  • LeetCode hot 100—验证二叉搜索树
  • 【DFS】二叉树中的深搜
  • 【实测闭坑】LazyGraphRAG利用本地ollama提供Embedding model服务和火山引擎的deepseek API构建本地知识库
  • 【自定义微信小程序拉下选择过滤组件】searchable-select
  • Spring Boot 整合 Elasticsearch:打造高性能全文检索实战
  • SQL优化记录
  • 【Go语言圣经3.6】
  • C++学习之redis
  • (C语言)指针与指针数组的使用教学(C语言基础教学)(指针教学)
  • 【算法百题】专题七_分治快排_专题八_分治归并
  • 以色列消防部门:已控制住耶路撒冷山火
  • 5月人文社科中文原创好书榜|巫蛊:中国文化的历史暗流
  • 解放日报:“北斗七星”列阵,AI群星闪耀
  • 人民日报评论员:焕发风雨无阻、奋勇前行的精气神
  • 湖北鄂城:相继4所小学有学生腹泻呕吐,供餐企业负责人已被采取强制措施
  • 荣盛发展股东所持1.17亿股将被司法拍卖,起拍价约1.788亿元