<div id=...">
最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • HTML5 新增 API

    正文概述 掘金(花猫儿)   2021-01-21   467

    新的 dom 操作方法

    1.获取 dom 元素方法

    获取单个元素,参数可以是任意选择器

    document.querySelector("选择器");
    
    <body>
      <div id="wrap1" class="wrap"></div>
      <div id="wrap2" class="wrap"></div>
    
      <script>
        let oDiv = document.querySelector('#wrap1');
        console.log(oDiv);  // 打印台输出 <div id="wrap1" class="wrap"></div>
        let cDiv = document.querySelector('.wrap');
        console.log(cDiv); // 打印台输出 <div id="wrap1" class="wrap"></div>
      </script>
    </body>
    

    由上面代码可以看出,document.querySelector() 可以获取到任意选择器的dom元素,当有两个相同的class标签时,则取到第一个class标签的dom元素。

    获取多个 dom 元素的方法

    document.querySelectorAll('选择器');
    
      <div id="wrap1" class="wrap"></div>
      <div id="wrap2" class="wrap"></div>
    
      <script>
        let oDiv = document.querySelectorAll('.wrap');
        console.log(oDiv);  // 打印台输出 [div#wrap1.wrap, div#wrap2.wrap]
        oDiv.forEach((ele, index) => {
          console.log(ele); // 输出 <div id="wrap1" class="wrap"></div> <div id="wrap2" class="wrap"></div>
        })
      </script>
    </body>
    

    由上面代码可知,当我们使用 document.querySelectorAll() 获取dom 元素时,我们获取到的是一个数组,我们可以利用数组的方法,比如 forEach 循环出所有的 dom 元素。

    2. 类的操作

    classList 操作类

    添加class类

    oDiv.classList.add('类名');
    

    删除class类

    oDiv.classList.remove('类名');
    

    检测是否含有这个类

    oDiv.classList.contains('类名');
    

    切换class类

    oDiv.classList.toggle('类名');  // 有这个类时删除这个类,没有则添加这个类
    

    3. data-* 自定义属性

    通过 data-自定义属性名,给元素添加自定义属性名。添加之后就可以通过 JS 或者或者设置属性。

    代码演示演示一下:

    <body>
      <div class="box" data-name="list"></div>
    
      <script>
        let oDiv = document.querySelector('.box');
        oDiv.dataset.name = 'list1';
        console.log(oDiv);  // <div class="box" data-name="list1"></div>
        oDiv.dataset.age = '18';
        console.log(oDiv);  // <div class="box" data-name="list1" data-age="18"></div>
      </script>
    </body>
    

    由上面的代码得出,

    当我们自定义属性名

    oDiv.dataset.name = '新的属性值';
    

    设置自定义属性

    oDiv.dateset.自定义属性名 = '自定义属性值';
    

    说了那么多,那么 data-* 到底有什么用呢,我们来自定义一个切换选项卡功能,来欣赏 data-* 独特的魅力:

    <body>
      <button class="btn" data-btn="list1">切换1</button>
      <button class="btn" data-btn="list2">切换2</button>
      <button class="btn" data-btn="list3">切换3</button>
    
      <div class="list1">1</div>
      <div class="list2">2</div>
      <div class="list3">3</div>
    
      <script>
        let oBtn = document.querySelectorAll('.btn');
        oBtn.forEach(ele => {
          ele.onclick = function () {
            let oDiv = document.querySelectorAll('div');
            oDiv.forEach(ele => {
              ele.style.display = 'none';
            })
            document.querySelector(`.${ele.dataset.btn}`).style.display = 'block';
          }
        })
      </script>
    </body>
    

    具体效果可自己复制代码去运行查看。

    文件读取

    文件上传是通过 input type类型的 file 表单控件实现的,读取是通过 FileReader 构造函数实现的。

    上传

    通过表单控件实现

    <input type="file" name="" />
    

    读取

    读取是通过 FileReader 构造函数实现的。

    FileReader 常用方法

    • readAsBinaryString:将文件读取为二进制编码
    • readAsDataURL:将文件读取为DataURL
    • readAsText:将文件读取为文本

    FileReader 提供的事件

    • onabort:读取文件中断时触发
    • onerror:读取文件出错时触发
    • onload:读取文件完成时触发,只在读取成功后触发
    • onloadend:读取文件完成时触发,无论读取成功或者失败都会触发
    • onloadstart:读取文件开始时触发
    • onprogress:正在读取文件

    下面来举一个案例:

    <body>
      <input type="file" />
    
      <script>
        // 获取 dom 元素
        let fileInp = document.querySelector('input');
        fileInp.onchange = function() {
          // 获取文件
          let file = this.files[0];
          // 创建读取器
          let reader = new FileReader();
          // 开始读取
          reader.readAsText(file);
          // 监听文件读取状态
          reader.onload = function() {
            console.log(reader.result);
          }
        }
      </script>
    </body>
    

    本地存储

    HTML5 的 web 存储方式,是一个比 cookie 更好的存储方式,传统方式采用 document.cookie 来进行存储,但是由于它存储大小只有 4kb 左右,解析也复杂,所以 HTML5 给我们带来了 localStorage 和 sessionStorage 两种本地存储方式。

    localStorage

    特点:

    • 永久存储
    • 多窗口共享
    • 容量大约 20MB

    常用方法:

    <script>
        window.localStorage.setItem(key, value);   // 设置存储内容
        window.localStorage.getItem(key);          // 获取存储内容
        window.localStorage.removeItem(key);       // 删除存储内容
        window.localStorage.clear();               // 清空内容
    </script>
    

    sessionStorage

    特点:

    • 生命周期为关闭当前浏览器窗口,关闭当前窗口存储的数据就会消失
    • 可以在同一窗口下访问,不会多窗口共享
    • 数据大约为 5 MB

    常用方法:

    <script>
        window.sessionStorage.setItem(key, value);   // 设置存储内容
        window.sessionStorage.getItem(key);          // 获取存储内容
        window.sessionStorage.removeItem(key);       // 删除存储内容
        window.sessionStorage.clear();               // 清空内容
    </script>
    

    注意:以上两种方法使用的 key 和 value 都必须是字符串。

    两种存储方式的使用方法都是几乎相同的。


    起源地下载网 » HTML5 新增 API

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元